004
08.06.2003, 21:53 Uhr
ao
(Operator)
|
Zitat: |
~Kathrin postete
C++: |
switch(argv[1][1]) { case 'u': printf("Zeige alle Großbuchstaben:\n"); while (text[i++] != '\0') { c=text[i-1]; gbi = isupper(c); if (gbi==256) { printf("%c", c); } } printf("\n"); break;
|
|
Was ist denn das für ein Vergleich mit 256? Das Ergebnis von isupper ist doch einfach nur ein bool-scher Wert, d.h. 0 ist false und jeder Wert ungleich 0 ist true. Ich würde lieber auf if(gbi) oder if(gbi != 0) testen.
Und in der while-Schleife zuerst i hochzählen und dann doch wieder ein Element tiefer nachsehen ist zwar nicht falsch, aber doch irgendwie verwirrend. Es ist immer fehlerträchtig, wenn ein Programmierer sich solche Dinge merken muß. Hier fände ich es klarer, immer auf text((i)) (*) zuzugreifen und erst am Ende i++ zu machen. Aber das ist nur meine Privatmeinung.
(*) statt ((i)) hier bitte i in [] setzen; wenn ich das mache, versteht das Forum das als kursive Formatierung. :-$
Für die Frage, wie du den gesamten Text auswerten kannst, schließe ich mich Heiko an und empfehle, mal rauszukriegen, wie die shell dein Programm füttert, also testweise zu Programmbeginn so was wie
C++: |
for (i = 0; i < argc; i++) printf ("%s\n", argv[i]);
|
zu machen.
Vielleicht ist danach schon alles klar.
ao Dieser Post wurde am 08.06.2003 um 21:57 Uhr von ao editiert. |