Just nu i M3-nätverket
Jump to content

Scanf returnerar vaddå?


Sasja

Recommended Posts

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!

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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å?

 

Link to comment
Share on other sites

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.

 

 

°±°

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...