Just nu i M3-nätverket
Gå till innehåll

Scanf returnerar vaddå?


Sasja

Rekommendera Poster

Vad är det funktionen scanf returnerar i C?

 

Som jag förstår det returnerar den antalet lyckade inläsningar, men i så fall borde den ju bara returnera 1, alltså är den totalt meningslös. Men det visar sig att så inte är fallet.

 

Förklara någon! Poäng utlovas till ett bra svar!

 

Länk till kommentar
Dela på andra webbplatser

scanf returnerar värdet på antal inlästa värden liksom

tex

scanf("(%d, %d)", &x, &y);

om detta lyckas returneras 2 eller EOF ifall den misslyckas.

scanf("(%d, %d, %d)", &x, &y, &z);

om detta lyckas returneras 3

Det kan användas så här:

if (2 == scanf("(%d, %d)", &x, &y)) {
   /* skriv ut x och y */
} else {
   /* Fel antal inmatade värden */
}

 

°±°

 

[inlägget ändrat 2004-08-28 21:20:21 av 0x2A]

Länk till kommentar
Dela på andra webbplatser

Bör ha tillägt att jag är nybörjare som börjat läsa dom 10-tal första sidorna ur min C-bok...

 

Så jag förstod dig inte riktigt 0x2A.

 

Men ett exempel ser ut som följer...

 

...
while (scanf("%f", &tal) == 1) {
...

 

När är det scanf inte returnerar ett i exemplet ovan? Det finns ett exempel som ser ut som ovan i boken och jag tycker det alltid bör returnera ett. Men om så fallet skulle vara skulle programmet aldrig avslutas väl ändå?

 

Länk till kommentar
Dela på andra webbplatser

När är det scanf inte returnerar ett i exemplet ovan?

scanf väntar i exemplet på ett flyttal, om du skriver i en bokstav så returnerar scanf 0 (alltså en misslyckad inläsning till tal).

Exemplet fortsätter i evighet så länge du matar in rätt sorts tal och slutar om du trycker in något som inte kan tolkas som %f eller trycker in en EOF (End Of File) har för mig att det är Ctrl-Z eller nåt.

 

 

°±°

 

Länk till kommentar
Dela på andra webbplatser

Tackar, poäng!

 

Ctrl+Z verkar inte fungera (eller?), någon som vet hur man får till ett EOF i DOS-prompten?

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...