所以这个循环应该计算一行中数字字符的数量,但每次都打印相同的值(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.
答案 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中了解有关该主题的更多信息。