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

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

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

#include 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 

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

 int words,lines,chara = 0; 

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

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

该行声明了3个变量,但只初始化了chara

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

你可以简单地纠正它:

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

你错过了初始化words变量

int words =0;

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