/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste