C-CodeSeltsames Verhalten mit dem Zählen Leerzeichen und Tabulatoren Programm
#include <stdio.h>
int main()
{
int c , nother , new , ndigits [10] , white, tabs ;
for (int i = 0 ; i< 10 ; i++)
ndigits[i] = 0 ;
while ((c = getchar())!= EOF)
{
switch (c)
{
case '0' : case '1' : case '2' :
case '3' : case '4' : case '5' :
case '6' : case '7' : case '8' :
case '9' :
ndigits[c- '0' ]++ ;
break ;
case ' ' :
printf("w"); /*to see how many spaces */
white++ ;
case '\t' :
printf("t");
tabs++;
case '\n' :
printf("n");
new++ ;
break ;
default :
nother++ ;
break ;
}
}
printf ("digits = ") ;
for (int i = 0 ; i < 10 ; i++)
printf ("%d" , ndigits[i]) ;
printf (",tabs = %d , new line = %d, spaces = %d , other = %d ",
tabs, white , new , nother);
return 0 ;
}
Wenn ich es
GCC
mit kompilieren und drücken Sie einfachCtrl + z
drucktZiffern = 00000, Tabs = 4.200.912, neue Zeile = 4194432, Leerzeichen = 2293540 andere = 2147307520
Woher kommen diese Zahlen?
ich es wieder kompilieren und
HELLO HELLO HELLO
geben Sie eingeben und drucktwtnwtnwnn
- warum ist, dass (es gibt 3 n als erwartet, warum es drei Registerkarten zählt)?
Compile mit Warnungen aktiviert: 'gcc -Wall Code.c' –
Sie haben 'ndigits [i] 'auf Null gesetzt. Was ist mit 'weiß',' tab', etc.? – dasblinkenlight
ja ich vergesse zu anderen Variablen initialisiert :) aber Ich kompiliere es erneut und geben Sie HALLO HALLO Hallo und klicken Sie auf Enter und es druckt wtnwtnwnn warum ist das (es gibt 3 n als erwartet, warum es drei Tabs zählt)? –