Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » scanf %s mit leerzeichen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.12.2003, 17:29 Uhr
lubU



Folgendes problem.


C++:
int main()
{

char name[100], geb[20], strassenr[100], plz[20];
FILE *daten;

printf("\n name (vor- nachname): ");
scanf("%[^\n]s", name);
printf("\n Geburtsdatum (ttmmjj): ");
scanf("%s", geb); // nach eingabe von Geb. springt er sofort zu PLZ
printf("\n Strasse ( + Hausnummer): ");
scanf("%[^\n]s", strassenr);
printf("\n Postleitzahl: ");
scanf("%s", plz);

daten = fopen("daten.dat","a");

// dann kommt der fprintf teil der kein problem is....

return 0;
}



nach einmal scanf("%[^\n]s") überspringt er das nächste mal wenn %[^\n]s auftaucht. ich möchte den string halt mit leerzeichen einlesen....
beim überspringen wird aber trotzdem der printf ausgeführt. nur die eingabe wird übersprungen.

Dieser Post wurde am 22.12.2003 um 17:33 Uhr von lubU editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.12.2003, 18:32 Uhr
0xdeadbeef
Gott
(Operator)



C++:
printf("\n name (vor- nachname): ");
fgets(name, 100, stdin);
printf("\n Geburtsdatum (ttmmjj): ");
fgets(geb, 20, stdin);
printf("\n Strasse ( + Hausnummer): ");
fgets(strassenr, 100, stdin);
printf("\n Postleitzahl: ");
fgets(plz, 20, stdin);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.12.2003, 19:52 Uhr
lubU



aaah dankeschön! was macht/bedeutet "stdin" ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.12.2003, 20:03 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


stdin ist die Standardeingabe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.12.2003, 20:21 Uhr
0xdeadbeef
Gott
(Operator)


Ums genau zu sagen, stdin ist ein FILE*, der auf die Standardeingabe zeigt. Es ist wichtig zu verstehen, dass man aus stdin genau so lesen kann, wie man es aus einer Datei täte. Im Grunde ist scanf(char *fmt, ...) auch nichts anderes als fscanf(stdin, char *fmt, ...). In dem Zusammenhang gibt es auch noch stdout (Standardausgabe) und stderr (Fehlerausgabe).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: