这个简单的代码有什么问题?

时间:2013-08-14 18:26:01

标签: c

我知道这可能是一个简单的错误,但我仍然无法弄清楚错误。我正在

指针地址,而不是打印出整数时的值。

#include<stdio.h>

int main(){

    char s1[100];

    int words,lines,chara = 0;


    FILE * fp;

    fp  = fopen("fox.txt","r");

    if(fp==NULL){
        printf("Can't open file");
    }
    else{
        while (fscanf(fp,"%s",s1) != EOF){

            words++;

        //  printf("%s",s1);
            }

    }
        printf("There are %d of words",words);
}

fox.txt

The quick 

brown fox
jumps over

the lazy 


dog

输出:

There are 2665625 of words

3 个答案:

答案 0 :(得分:11)

words未初始化,因此您从未定义的值开始递增。

int words,lines,chara = 0;

chara设置为0,但不初始化其他变量。如果你想初始化所有3,你需要

int words = 0, lines = 0, chara = 0;

答案 1 :(得分:3)

int words,lines,chara = 0;

此行声明3个变量,但仅初始化chara

稍后在循环中开始递增words,但它尚未初始化。 它有一个未定义的值。

您只需执行以下操作即可更正:

int words = 0, lines = 0, chara = 0;

答案 2 :(得分:1)

您错过了初始化words变量

int words =0;

未初始化的变量将具有垃圾值。