Sé que esto podría ser un simple error, sin embargo, todavía no puedo entender el error. estoy obteniendo
la dirección del puntero en lugar del valor cuando imprimo un número entero.
#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
salida:
There are 2665625 of words
words
no se inicializan, por lo que comienza a incrementar desde un valor indefinido.
int words,lines,chara = 0;
establece chara
en 0 pero no inicializa las otras variables. Si quieres inicializar los 3, necesitarías
int words = 0, lines = 0, chara = 0;
int words,lines,chara = 0;
Esta línea declara 3 variables pero inicializa solo chara
.
Más adelante en el ciclo, comienzas a incrementar las words
pero aún no se ha inicializado. Tiene un valor indefinido.
Puedes corregirlo haciendo simplemente:
int words = 0, lines = 0, chara = 0;
Te perdiste inicializando words
variable
int words =0;
La variable sin inicializar tendrá valor de basura.