c - 这个程序什么时候返回0

标签 c arrays string

下面的函数是返回通过键盘输入的一行的长度。但它说(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/

相关文章:

Java正则表达式不一致组

c - 获取 C 4 字节字符串的值作为 uint

c - 字符串/段错误

c - 如何使用我的自定义系统调用及其名称而不是其编号

c - 如何解决c警告:pointer from integer without a cast?

c - 如何删除 GCC 4.6 : "missing initializer [-Wmissing-field-initializers]"? 中的警告

javascript - 将输入值设为数组

arrays - Kotlin 观察数组变化

c - 如何在另一个c文件中使用结构

c - c中函数声明的范围