c - c != '\n'条件在 "for"循环中的作用是什么(C语言)?

标签 c arrays for-loop conditional-statements character

此函数的输入是 s[] - 字符数组和 lim - 此数组的最大可能长度。

函数本身用于确定在控制台中输入的输入字符数组的长度。

问题是,for 循环中c != '\n' 条件的主要思想是什么?

我猜它是用来打破循环的。这很清楚。但是如果我不在输入中输入 \n ,我就无法理解它是如何实现的。

\0 这样的数组末尾是终止符吗?

如果是这样,我们为什么要在那之后使用 if (c == '\n') 条件?

代码:

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;
}

最佳答案

当你按下 Enter 时,一个 \n 换行符被添加到输入缓冲区,stdin,这意味着这是最后一个字符在输入缓冲区中。

所以它只适合循环继续,直到 getchar() 检索到最后一个字符。

循环控制指出 c 必须是:

  • 不同于\n
  • 不同于EOF
  • 并且迭代器i必须小于lim - 1

如果这些条件之一不满足循环中断,那么 c 可能不等于 \n

之后,如果c等于\n,则加入s,条件if (c == '\n') 在那里是因为,如前所述,c 可能不等于 \n,在那种情况下它不应该是添加到 s

最后,s 必须以空值终止(s[i] = '\0'),这样它才能被正确解释为一个字符串,也就是一个以空值终止的字符数组. \n 不是空终止符,\0 是。

添加 \n 的事实只是因为实现者希望它如此,它是实现的一部分,不一定非要如此,但确实如此。 它在某些情况下很有用,例如 fgets 库函数有类似的实现,它将 \n 添加到包含缓冲区,然后 null 终止它。

关于c - c != '\n'条件在 "for"循环中的作用是什么(C语言)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62324059/

相关文章:

java - 导航 2D 数组时,检查相邻元素是否存在相对于入口点的有效路径?

algorithm - 循环的大 O 分析

python - 在 python 中使用重复索引对循环进行矢量化

c - 如何从 fprintf 的输出 .csv 进行 fscanf

c - 嵌套结构/数组初始化

c - c 中 4x4 矩阵的 getter 问题

在 C 中创建迭代数组并格式化电话号码的方法

python - 基于numpy中的内核提取子数组

python - 在数字列表中找到最接近的录制速度 [python]

c - Pthread 属性使用