关于字符串中null和EOF的理解问题
题目是:设计并测试一个函数,从输入中获取n个字符,把结果储存在一个数组里,它的地址被传递作为一个参数。(c primer plus p371编程练习第一题)。答案如下:
#include<stdio.h>
#define LEN 10
char* getnchar(char* str,int n);
int main(void)
{
char input[LEN];
char* check;
check=getnchar(input,LEN-1);
if(check==NULL)
puts("Input failed.");
else
puts(input);
puts("Done.");
return 0;
}
char* getnchar(char* str,int n)
{
int i,ch;
for(i=0;i<n;i++)
{
ch=getchar();
if(ch!=EOF) //这里的EOF是什么意思,为什么要加这个判断
str[i]=ch;
else break;
}
if(ch==EOF) //为什么值为EOF就要返回空指针类型呢
return NULL;
else
{
str[i]='\0';
return str;
}
}
按照我的理解,EOF在键盘输入为ctrl+z,逻辑上来说如果不输入这个值上述的判断不是没有用吗?还是EOF在这里有别的含义?请各位老铁指教!