array[4] is an array of 4 length. Passing array and 4 to function read_line, the array str[] would be an array of 4 length so the array could only hold a character up to str[3], I thought.
#include <stdio.h>
int read_line(char str[], int n);
int main(void)
{
char array[4];
read_line(array, 4);
printf("%s\n", array);
return 0;
}
int read_line(char str[], int n)
{
int ch, i = 0;
while ((ch = getchar()) != '\n')
if (i < n)
str[i++] = ch;
str[i] = '\0';
return i;
}
But when I entered four characters like abcd, it runs without any error.
abcd
Why can the array str[] hold '\0' in str[4]?