C para la ejecución del ciclo

Tengo un progtwig simple (basado en el ejemplo del libro de la sección 1.5.2 del lenguaje de progtwigción C, para el conteo de personajes) El progtwig en sí es muy simple, sin embargo, no estoy obteniendo los resultados esperados.

Parece que numberOfChars se incrementa dos veces y no, ¿por qué …?

Estoy usando el comstackdor cygwin + gcc, por favor vea la imagen: compilación + prueba

int main () { int numberOfChars; for(numberOfChars = 0; getchar() != EOF; numberOfChars++) ; //null statement printf("Number of chars = %d\n", numberOfChars); return 0; } 

Gracias por cualquier ayuda 🙂

Para obtener un 3 , puede escribir:

 #include  int main () { int numberOfChars = 0; do { while(getchar() != '\n') numberOfChars++; } while(getchar() != EOF && numberOfChars++); printf("Number of chars = %d\n", numberOfChars); return 0; } 

Luego presione Ctrl + D para salir del bucle nested.

De hecho, su progtwig es correcto. Te dio 6 porque has ingresado 6 caracteres: 1 , \n , 2 , \n , 3 , \n .

Cree un archivo, luego ejecute el progtwig cygwin od, seguido de una ejecución del progtwig C de ejemplo:

 od -x < testfile a.out < testfile 

Luego puede ver qué y cuántos caracteres tenía exactamente en el archivo y evitar sorpresas.

Como ayuda para la depuración, si sospechara que algo estaba mal, agregaría algo como:

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

Para entender el procesamiento de mi código estaba haciendo.