以下函数用于返回通过键盘输入的行的长度。但是它说(C编程语言K& R)it will return the length of the line, or zero if end of file is encountered.
但是当我用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;
}
答案 0 :(得分:2)
您正确分析了该程序。
但是当我用C语言分析我的基本知识时,至少返回行的长度直到EOF
- &GT;当行为空时它将返回0
答案 1 :(得分:2)
什么都没有,EOF会在那里,例如如果是空行,c==EOF
并且您在for
循环中输入了(c=getchar())!=EOF
的条件。因此,i
不会更改,并且在执行return i;
后将返回它,它将返回0
我希望这会有所帮助。
答案 2 :(得分:0)
如果该行为空,则返回0.
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!=’\n’; ++i)
首先,您设置i=0;
。如果((c=getchar())==EOF)
,for循环将不会运行,i
将不会递增。当第一个字符是\n
时,情况是相同的(在这种情况下,我将在以后递增)
答案 3 :(得分:0)
for
循环中的一个条件是(c=getchar())!=EOF
。所以当线条为空时,即。 c==EOF
在第一个实例本身,它不会进入循环。因此i
将不会增加并返回0.