下面的函数是返回通过键盘输入的一行的长度。但它说(The C Programming language K & R)它将返回行的长度,如果遇到文件末尾则返回零。
但是当我至少用我在 C 中的基本知识进行分析时它返回行的长度,直到 EOF
。那么它什么时候返回0
。或者我的理解是错误的。任何人都可以澄清我吗?
int getline(char s[],int lim)
{
int c, i;
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!=’\n’; ++i)
s[i] = c;
if (c == ’\n’) {
s[i] = c;
++i;
}
s[i] = ’\0’;
return i;
}
最佳答案
当什么都没有时,EOF 将在那里,例如如果是空行,c==EOF
并且您在for
循环中输入了一个条件(c=getchar( ))!=EOF
。因此i
不会改变,当执行return i;
后返回时,会返回0
希望对您有所帮助。
关于c - 这个程序什么时候返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17274235/