frage zu scanf
-
hallo habe folgendes programm geschrieben:
#include <stdio.h> #include <ctype.h> #include <string.h> void main() { //Deklaration char txt1[80]; char txt2[80]; char *zeiger1; char *zeiger2; //Eingabe der Zeichenkette printf("Geben Sie eine Zeichenkette ein: "); scanf("%s", &txt1); //Kopieren des Strings for(zeiger1 = &txt1[0], zeiger2 = &txt2[0]; *zeiger1; zeiger1++, zeiger2++) *zeiger2 = *zeiger1; *zeiger2 = 0; //Kleinbuchstaben in Großbuchstaben umwandeln for(zeiger1 = &txt1[0]; *zeiger1; zeiger1++) *zeiger1 = toupper(*zeiger1); //Ausgabe printf("%s\n\n", txt1); printf("%s\n\n", txt2); }
nun meine frage wenn ich einen text eingeben und diesen durch leerzeichen trenne
also so: hallo welt wird der string nur bis hallo in txt2 kopiert bzw. jeder buchstabe wird nur bis hallo groß gemacht. was muss ich mache, damit auch wörter nach dem leerzeichen hier welt berücksichtigt werden ?
-
Da gibt es eine Funktion, die heißt fgets():
fgets(Stringname, Größe, für Einlesen: stdin)
In deinem Fall würde das so aussehen:
fgets(txt1,80,stdin);
_______________
-
Schalte mal Warnungen bei deinem Compiler ein, dann solltest du sehen, dass du scanf falsch benutzt.
Außerdem ist die Signatur von main falsch. Es muss int main heißen und nicht void main!
-
rüdiger schrieb:
Schalte mal Warnungen bei deinem Compiler ein, dann solltest du sehen, dass du scanf falsch benutzt.
meinst du den adressoperator? nein, das ist nicht falsch. es geht mit oder ohne in diesem fall.
rüdiger schrieb:
Außerdem ist die Signatur von main falsch. Es muss int main heißen und nicht void main!
nur bei einer 'hosted implementation' von C. tatsächlich muss die anfangsfunktion noch nicht einmal 'main' heissen.
:xmas2:
-
okay mit fgets funktioniert das super!!
vielen dank!!
-
Andromeda schrieb:
rüdiger schrieb:
Außerdem ist die Signatur von main falsch. Es muss int main heißen und nicht void main!
nur bei einer 'hosted implementation' von C. tatsächlich muss die anfangsfunktion noch nicht einmal 'main' heissen.
Wir gehen davon aus, dass Anfängerprobleme wie diese nicht in einem freestanding environment entstehen
-
TactX schrieb:
Andromeda schrieb:
rüdiger schrieb:
Außerdem ist die Signatur von main falsch. Es muss int main heißen und nicht void main!
nur bei einer 'hosted implementation' von C. tatsächlich muss die anfangsfunktion noch nicht einmal 'main' heissen.
Wir gehen davon aus, dass Anfängerprobleme wie diese nicht in einem freestanding environment entstehen
Natürlich. Ich bin sonst nicht so pingelig. Ich fand nur, man kann so etwas nicht einfach unkommentiert stehen lassen, weil es jemand mit +14000 Beiträgen geschrieben hat.