c - 为什么我们要使用额外的表达方式?

标签 c

这是来自 Kernighan & Ritchie 的“The C Programming Language”的示例:

int getline(char s[], int lim)
{
   int c, i = 0;

   while (--lim > 0; && (c=getchar()) !=EOF && c !='\n')
   {
      s[i++] = c;
   }

   if (c =='\n') 
   {
      s[i++] = c;
   }

   s[i] = '\0';

   return i;
}

为什么我们应该检查 c != '\n',尽管在​​那之后我们使用了 s[i++] = c

最佳答案

函数从标准输入中读取字符,直到找到 EOF 或换行符。

第二个检查确保唯一的换行符被放入 char 数组。 EOF 不应出现在正确的 c 字符串中。此外,如果该字符不是换行符,则意味着我们可能已经填满了我们的 c 字符串,在这种情况下,我们不应该再向其中添加任何字符。

注意我们仍然附加了'\0'。我们确保在我们的 c 字符串中仍有空间容纳一个字符,因为我们使用前缀减量器,它在比较之前进行评估。

关于c - 为什么我们要使用额外的表达方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71913/

相关文章:

c - C中的全局文件指针声明

c - softwareserial.h 没有这样的文件或目录

java - 创建时调用的 JNI 方法对象

c - C语言的sublime text 2构建系统

c - 在 Linux 上正则化 C 中不存在的路径

c - 什么使 [1] :entering a/b. c.edu/e/r/t/d...

c - 在 openCV 中访问 mat 元素

c - 是否可以对多个连续的数组元素进行按位运算?

c - 库插入/注入(inject)不适用于 open 命令

c - Linux 裸系统调用,而不是 glibc