循环计数器每次使用不同的输入打印相同的值

时间:2016-11-21 19:52:07

标签: c

所以这个循环应该计算一行中数字字符的数量,但每次都打印相同的值(6356732)。我做错了什么?

if((i >= '0') && (i <= '9'))
    {
        printf("%c\n", i); 
        count = count++;        
    }

count刚刚声明&#39; int count = 0;&#39;。

编辑;我在下面提出了一个更改,但输出没有改变?

while(fscanf(f, "%c\n", &i) !=EOF) 
{
    if((i >= '0') && (i <= '9')) 
    {
        count = 0;
        sum = 0;
        printf("%c\n", i);
        count++;        
        sum++;
    }
}

编辑2;好的,所以我在所有可爱的人的帮助下,让程序按预期工作!非常感谢!

 while(fscanf(f, "%c\n", &i) !=EOF) 
{
    if((i >= '0') && (i <= '9')) 
    {
        printf("%c\n", i); 
        count++;                

    }
}

count is defined at zero at the start of the program.

2 个答案:

答案 0 :(得分:3)

count = count++;        

undefined behaviour。 为了您的目的,您只需要:

count++;

这是一个从stdin和count chars读取一行的简单示例(您可以轻松修改以适合您的文件读取和计数):

#include <stdio.h>

int main(void) 
{   
    char line[256];
    int count = 0;
    int sum = 0;
    size_t i = 0;

    if (fgets(line, sizeof line, stdin)) {
       while(line[i]) {
          if((line[i] >= '0') && (line[i] <= '9')) { 
             printf("%c\n", line[i]); 
             count++; 
             sum = sum + line[i] - '0';
          }
          i++;
       }  
    }

    printf("%d %d\n", sum, count);
    return 0;
}

答案 1 :(得分:2)

您应该使用count++;count = count + 1;,因为未定义count = count++;。您可以在this post中了解有关该主题的更多信息。