C string

babadinding

Cadet 2nd Year
Registriert
Apr. 2015
Beiträge
16
hello can someone correct my error in the following program and figure out where i went wrong

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
char text[]= "once upon a time there live a lion and other animals";
int numberof, i,x,quersumme, numberof_byte;
int numberof_e=0, numberof_z=0, numberof_A=0, numberof_M=0, numberof_space=0;

numberof=strlen(text);
numberof_byte=sizeof(text);
for(i=0;i<=numberof;i++){
//x=text;
switch(text){
case 'e': numberof_e=numberof_e+1; break;
case 'z': numberof_z= numberof_z+1; break;
case 'A': numberof_A= numberof_A+1; break;
case 'M': numberof_M=numberof_M+1; break;
case ' ': numberof_space=numberof_space+1; break;
}

}
printf("%s\n", text);
printf("%d\n", numberof);
printf("%d\n", numberof_byte);
printf("the number of e: %d\n", numberof_e);
printf("the number of z: %d\n", numberof_z);
printf("the number of A: %d\n", numberof_A);
printf("the number of M: %d\n", numberof_M);
printf("the number of space: %d\n", numberof_space);



return 0;
}




once upon a time there live a lion and other animals
52
53
the number of e: 6
the number of z: 0
the number of A: 0
the number of M: 0
the number of space: 10

Process returned 0 (0x0) execution time : 0.063 s
Press any key to continue.
 
sie meinten bei der string "once upon a time there live anstatt lived"
 
Zeile 12 würde ich mal angucken.
In Zukunft bitte in [code]...[/code]-Tags packen, dann wäre die Zeilenangabe auch eindeutiger.
 
Hallo,

ich sehe auf den ersten Blick keinen Fehler und die Ausgabe am Ende des Posts entspricht der erwarteten Ausgabe, da zwischen Groß- und Kleinbuchstaben unterschieden wird.
Vielleicht verstehe ich aber aufgrund des sehr dürftigen Anfragetextes nicht das Problem.

Zudem:
Die Anfrage und der gesamte Code sind auf Englisch, außer der Bezeichner einer Variable, nämliche "quersumme", welche selbst nie verwendet wird. Finde ich irgendwie amüsant, dass sogar die Anfrage auf Englisch ist, wo man sie doch auf Deutsch erwarten würde und sich im Quelltext, den man auf Englisch erwarten würde, sich etwas Deutsches findet.
Aber das nur nebenbei.
 
nothing wrong just bad style ;)
Byte = includes terminal symbol \0 but size() doesn't, that's why you see 52 and 53

int i = 0;
while (text != '\0') {
...
i+=1;
}

will work too. terminal is hidden from you, acutally it looks like:
"once upon a time there live a lion and other animals\0";
 
Zuletzt bearbeitet:
Zurück
Oben