C用于循环执行

时间:2016-02-07 12:51:59

标签: c

我有一个简单的程序(基于C编程语言编辑的例子,第2节1.5.2书),用于字符计数。程序本身很简单,但我没有得到期待的结果。

似乎 numberOfChars 增加了两倍,我不知道为什么......?

我正在使用cygwin + gcc编译器,请参阅图片:compilation+test

int main () {   
    int numberOfChars;  

    for(numberOfChars = 0; getchar() != EOF; numberOfChars++) 
        ;   //null statement

    printf("Number of chars = %d\n", numberOfChars);

    return 0;
}

感谢您的帮助: - )

2 个答案:

答案 0 :(得分:0)

要获得3,您可以写:

#include <stdio.h>

int main () {
        int numberOfChars = 0;

        do {
                while(getchar() != '\n')
                        numberOfChars++;
        } while(getchar() != EOF && numberOfChars++);

        printf("Number of chars = %d\n", numberOfChars);

        return 0;
}

然后按 Ctrl + D 退出嵌套循环。

事实上,你的程序是正确的。它为您提供了6,因为您输入了6个字符:1\n2\n3,{{ 1}}。

答案 1 :(得分:0)

创建一个文件,然后运行cygwin od程序,然后运行示例C程序:

od -x < testfile
a.out < testfile

然后你可以看到&amp;你在文件中拥有多少个字符,避免出现意外。

作为调试助手,如果我怀疑有问题,我会添加类似的内容:

int c; for(numberOfChars = 0; (c = getchar()) != EOF; numberOfChars++) 
    printf( "\0x%x", c);

了解我的代码正在进行的处理。