C中的For循环,用于从文本文件读取序列号

C中的For循环,用于从文本文件读取序列号,c,for-loop,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++; } 变量count是size\u t类型,in

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

但整个代码都是这样的:

while(getline(&line, &count, input) != -1) 
{
  for ( ; count>0; count--, j++)
    sscanf(line, "%d", &array[i]);
  i++;
}
变量
count
size\u t
类型,
int i,j=0
FILE*输入用于读取存储在文本文件中的数字序列


提前感谢。

因为他已经声明了他希望增加的变量,所以他没有在for循环中重新声明它。他还在循环的每一圈改变两个变量,他减少计数,增加j。如果你需要的话。他基本上是在读一个文件。

因为他已经声明了他想要增加的变量,所以他没有在for循环中重新声明它。他还在循环的每一圈改变两个变量,他减少计数,增加j。如果你需要的话。他基本上是读一个文件。

对于(;count>0;count--),j++)的意思是:

  • 什么也不做
    (;

    这通常是初始化回路控制变量的地方,
    但如果已经这样做了,什么也不做也没关系
  • 开始循环
    • 如果count大于0,
      count>0;
      ,则执行正文,
      否则在尸体后面继续
    • 然后递减计数和递增j
      count--,j++)
  • 环路
对于(;count>0;count--,j++)
表示:

  • 什么也不做
    (;

    这通常是初始化回路控制变量的地方,
    但如果已经这样做了,什么也不做也没关系
  • 开始循环
    • 如果count大于0,
      count>0;
      ,则执行正文,
      否则在尸体后面继续
    • 然后递减计数和递增j
      count--,j++)
  • 环路

虽然传统的
for
循环看起来像
for(i=0;i
这也是一种有效的使用方法

  • 循环的第一部分是空的,因为它不需要 (
    对于(;)
    也是有效的)
  • 第二部分(
    count>0;
    )是您预期的停止条件
  • 第三部分是在每次迭代结束时所做的工作,在这种情况下,这是两件事(可以是0个命令,或者任何其他数量的命令):
    count-,j++
用于
循环的
可以与0、1或2个it部件一起使用,这意味着所有这些选项都可以:

  • (;;)
  • 仅用于(int i;;)
    声明。有点奇怪,但很有道理
  • for(int i=0;i<10;)
    也有效,但这可能是一个无限循环
  • for(int i=0;;i++)
    也有效,但这可能是一个无限循环,因为不存在停止条件(循环内的
    break
    可以处理此问题)

  • for(int i=0;i而传统的
    for
    循环看起来像
    for(i=0;i
    这也是一种有效的使用方法

    • 循环的第一部分是空的,因为它不需要 (
      对于(;)
      也是有效的)
    • 第二部分(
      count>0;
      )是您预期的停止条件
    • 第三部分是每次迭代结束时要做的事情,在本例中,这是两件事(可以是0个命令,或任何其他数量的命令):
      count--,j++
    用于
    循环的
    可以与0、1或2个it部件一起使用,这意味着所有这些选项都可以:

  • (;;)
  • 仅用于(int i;;)
    声明。有点奇怪,但有效
  • for(int i=0;i<10;)
    也有效,但这可能是一个无限循环
  • for(int i=0;;i++)
    也有效,但这可能是一个无限循环,因为不存在停止条件(循环内的
    break
    可以处理此问题)

  • for(inti=0;i让我们检查一下让您感到困惑的代码行

    for (; count>0; count--, j++){
        statement
    }
    
    计数>0时执行
    语句
    。它重复执行
    计数--,j++
    其中
    是逗号运算符。此运算符执行以下操作:

    expression1, expression2
    
    求值
    expression1
    ,然后求值
    expression2
    ,并返回
    expression2
    的值作为整个表达式的值

    因为这里不使用
    count--,j--
    的值,所以这只是执行
    count--
    然后执行
    j--


    for
    -循环的每个参数都是可选的,因此即使(;)
    for(;)也是有效的,并且与
    等效,而(1)
    让我们检查一下让您困惑的代码行

    for (; count>0; count--, j++){
        statement
    }
    
    计数>0时执行
    语句
    。它重复执行
    计数--,j++
    其中
    是逗号运算符。此运算符执行以下操作:

    expression1, expression2
    
    求值
    expression1
    ,然后求值
    expression2
    ,并返回
    expression2
    的值作为整个表达式的值

    因为这里不使用
    count--,j--
    的值,所以这只是执行
    count--
    然后执行
    j--


    for
    -循环的每个参数都是可选的,因此即使(;)
    也是有效的,相当于
    ,而(1)

    在该代码中几乎没有任何意义。即使重复从
    输入读取行,循环中的
    sscanf
    也只是重复读取相同的
    int
    值(第
    行中的第一个)在位置
    i
    处放入一些
    数组
    ,在整个循环中不会改变。
    j
    除了for循环中看似无用的post增量外,其他地方都没有使用,
    i
    仅在for循环终止后递增。最后,
    count
    getline
    结果的字节计数。您是这是真的吗