|
| scanf og white-space problemer Fra : Digger |
Dato : 15-08-01 17:11 |
|
Jeg har et probl. vedr. scanf, hvis jeg indtaster flere ord ingen enter,
opfatter scanf hver space som en string, ens betydende med,
at x antal ord bliver delt op i x antal strings.
Er der nogen måde man kan "forvandle" disse \0 til space istedet for ???
Dennis
| |
Kent Friis (15-08-2001)
| Kommentar Fra : Kent Friis |
Dato : 15-08-01 18:38 |
|
Den Wed, 15 Aug 2001 18:11:11 +0200 skrev Digger:
>Jeg har et probl. vedr. scanf, hvis jeg indtaster flere ord ingen enter,
>opfatter scanf hver space som en string, ens betydende med,
>at x antal ord bliver delt op i x antal strings.
>Er der nogen måde man kan "forvandle" disse \0 til space istedet for ???
Mon ikke du skal bruge fgets() i stedet for?
Mvh
Kent
--
F0 0F C7 C8 - Intel Pentium bug
| |
Jakob Stoklund Olese~ (15-08-2001)
| Kommentar Fra : Jakob Stoklund Olese~ |
Dato : 15-08-01 19:31 |
|
Digger <digger1@mail.tele.dk> writes:
> Jeg har et probl. vedr. scanf, hvis jeg indtaster flere ord ingen enter,
> opfatter scanf hver space som en string, ens betydende med,
> at x antal ord bliver delt op i x antal strings.
> Er der nogen måde man kan "forvandle" disse \0 til space istedet for ???
Hvis du bare vil læse en linie ad gangen, saa brug fgets(). gets() er
en daarlig ide, da den ikke kan sikres mod bufferoverløb.
Hvis du vil bruge scanf(), kan du gøre noget saaledes:
char buf[81];
float f;
if (scanf("%f %80[^\n]\n", &f, buf) != 2)
abort();
Bemærk, at %[ ogsaa tager indledende whitespace med, det gør %s ikke.
/stoklund
| |
|
|