以下函数用于返回通过键盘输入的行的长度。但它说(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;
}发布于 2013-06-24 19:28:45
当什么都没有的时候,EOF就会出现,比如在空行,c==EOF的情况下,你已经在for循环中输入了一个条件,那就是(c=getchar())!=EOF。因此,i不会改变,当在执行return i;之后返回它时,它将返回0
我希望这能帮到你。
发布于 2013-06-24 19:22:04
你对程序的分析是正确的。
但是,当我用C语言进行基本知识分析时,至少是返回到EOF的行的长度
->当该行为空时,它将返回0
发布于 2013-06-24 19:23:57
如果该行为空,则返回0。
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!=’\n’; ++i)首先,设置i=0;。如果为((c=getchar())==EOF),则for循环不会运行,i也不会递增。当第一个字符是\n时,情况是一样的(在这种情况下,我将在稍后递增)
https://stackoverflow.com/questions/17274235
复制相似问题