c - C中的for循环用于从文本文件中读取序列号

标签 c for-loop

我在阅读 C 中的循环时,发现了一行有趣的代码,但我无法真正理解。如果有人能向我解释这一行,我将不胜感激: for (; count>0; count--, j++)

但是整个代码是这样的:

while(getline(&line, &count, input) != -1) 
{
  for ( ; count>0; count--, j++)
    sscanf(line, "%d", &array[i]);
  i++;
}

变量countsize_t类型,int i,j = 0FILE *input;为读取存储在文本文件中的一系列数字。

提前致谢。

最佳答案

虽然传统 for循环看起来像 for(i = 0; i < N; i++)这也是一种有效的使用方式。

  • 循环的第一部分是空的,因为它不需要 (for(;;) 也是有效的)。
  • 第二部分(count>0;)是您所期望的停止条件
  • 第三部分是每次迭代结束时所做的事情,在本例中 - 这是两件事(可以是 0 个命令,或任何其他数量的命令):count--, j++

A for loop 可以与它​​的 0,1 或 2 个 parts 一起使用,这意味着所有这些选项都可以:

  1. for(;;)
  2. for(int i;;)只有声明。有点奇怪,但有效
  3. for(int i=0; i < 10;)也有效,但这可能是一个无限循环
  4. for(int i=0; ; i++)也有效,但这可能是一个无限循环,因为不存在停止条件(循环内的 break 可以处理这个)
  5. for(int i=0;i<10;i++)传统的
  6. for(;i<10;i++)如果 i 有效在别处声明(它也应该被定义......)
  7. for(;i<10;)只有停止条件,奇怪,但有效
  8. for(;;i++)如果 i 也有效在别处声明,但这可能是一个无限循环

另一件需要注意的事情:因为在 for 循环的每个部分中都可以使用任意数量的语句,所以你可以这样:

    for (int i = 0, j = 0; i < 1, j < 5; i++, j++)
        printf("%d\t%d\n", i, j);

请注意,使用 ,很棘手。它将执行每个语句但只评估最后一个,这意味着在循环的 3 个部分中的每个部分:

  1. int i = 0, j = 0;两者都会执行。无评价相关
  2. 棘手的部分 i < 1, j < 5两者都将只执行但是 j < 5将被评估,意思是,循环停止条件是j < 5 . i < 1写在那里,但这不会使循环停止
  3. i++, j++与 1 相同。两者都会执行。无评价相关

这是输出:

0       0
1       1
2       2
3       3
4       4

关于c - C中的for循环用于从文本文件中读取序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820633/

相关文章:

c - 为什么我的代码适用于某些测试用例而不适用于其他测试用例

c - 如何选择缓冲区大小?

c - OpenGL工作着色器?

Java HashMap放入一个for循环中

c - For循环执行C中的条件限制

c - fflush(stdin) 在 C 编程中做什么?

c - 编译时错误 "undefined reference to "

javascript - 在 Eloquent Javascript 中循环

java - 暴力破解: count number of sub strings in a string array

c - C 中的数组循环