EOF是一个宏定义,值是-1,一般用在读取输入
'\0'是ASCII码,值为0,c语言中约定string以'\0'结尾,也就是说,我们自定义的char[]要以'\0'结尾
getchar()返回的结束符号是EOF,而不是‘\0’
int intline[10];
intline[0] = getchar();//键入ctrl+z
if (intline[0] == EOF) {
printf("EOF得出intline的末尾\n");//输出
}
if (intline[0] == '\0') {
printf("\\0得出intline的结尾\n");//未输出
}
所以当我们将读入的数据保存在数组后,要手动地将最后一个位置赋值为'\0'
int line[MAXLINE];
int i = 0;
int c = 0;
/* i < MAXLINE - 1是为了留一个位置给'\0' */
while ((c = line[i++] = getchar()) != EOF&&i < MAXLINE - 1)
;
if (c == EOF) { /*如果因为EOF结束循环,则EOF也被输入到数组中,覆盖掉EOF*/
line[i - 1] = '\0';
}
else /*如果因为超过数组大小而结束循环,则手动将最后一位赋值为结束符'\0' */
{
line[i] = '\0';
}