hallo leute, ich hab folgendes programm der zählen muss wieviele buchstaben ein wort enthält, es funktioniert leider nur wenn ich wörter eingebe die gerade eine anzahl von buchstaben hat. kann mir mal jemand helfen? danke im voraus. #include<stdio.h> void main() { char text1[20]; int i; printf("geben sie ein wort ein:\n"); gets(text1); for(i=0;text1[i];i++) i++; printf("das wort hat %i buchstaben\n",i); }
> for(i=0;text1[i];i++) > i++; > > hier wird "i" zweimal incrementiert. >> mann mann ich habs übersehen, vielen vielen dank. Das springt doch eigentlich sofort ins Auge. Was machst du denn bei >10000 Zeilen Code... ;-)
Am besten Du gewöhnst Dir an, die geschweiften Klammern bei Schleifen etc. immer zu schreiben. Der Code wird übersichtlicher und man muss nicht immer überlegen, ob die nachfolgenden Zeilen ausgeführt werden oder nicht. Es sticht einem dann geradezu in die Augen ;-) Wenigstens hast Du die zweite Zeile mit dem i++; eingerückt, das ist schon mal ein Schritt in die richtige Richtung.
Gross-/Kleinschreibung hilft dem Gehirn auch ungemein. Und Variablennamen mit mehr als einem Buchstaben...
Wieso für eine zählervariable mehr als einen Buchstaben nehmen? Ok in diesem fall könnte man wirklich count oder so nehmen aber egal. Ich hätte es so gemacht:
1 | void main(){ |
2 | char text1[20]; |
3 | int i=0; |
4 | |
5 | printf("geben sie ein wort ein:\n"); |
6 | gets(text1); |
7 | |
8 | while(text1[i++]) ; |
9 | printf("das wort hat %i buchstaben\n",i); |
10 | }
|
und hoffen das das Wort nicht länger als 20 Zeichen ist. Da wird wohl bald der nächste Patch fällig sein.
Stimm für sowas sollte man lieber getch nehmen:
1 | #define COMMAND_BUFFER 20
|
2 | void main(){ |
3 | char debug[COMMAND_BUFFER]; /* Buffer für Debug-Kommando */ |
4 | unsigned char i; |
5 | |
6 | printf("geben sie ein wort ein:\n"); |
7 | while(1){ |
8 | i = 0; |
9 | do{ |
10 | debug[i] = getch(); |
11 | putc(debug[i]); /* Echo */ |
12 | if(debug[i] == '\b' && i){ /* Backspace? */ |
13 | putc('\b'); |
14 | i--; /* letztes Zeichen löschen */ |
15 | }
|
16 | else{ |
17 | i++; |
18 | }
|
19 | if(i >= COMMAND_BUFFER -1){ /* String zu lang */ |
20 | i = 0; |
21 | printf("\nString zu lang!\n"); |
22 | continue; |
23 | }
|
24 | /* Schleife bei ENTER verlassen */
|
25 | }while(debug[i-1] != '\r' && debug[i-1] != '\n'); |
26 | |
27 | debug[i-1] = '\0'; /* Stringterminierung */ |
28 | printf("das Wort hat %i buchstaben\n",i-1); |
29 | |
30 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.