0

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]?

Fary
  • 77
  • 4

0 Answers0