Frage zu eingabestrom

  • hallo,

    könnte mir jmd. diese frage beantworten, wäre nett. danke

    C
    Was ist die Ausgabe des folgenden Programms bei den folgenden Eingaben. Welche Zeichen 
    verbleiben jeweils im Puffer des Eingabestroms stdin?
    - “\n    \n5\n“
    - “\n\n5- 5\n“
    - “\n5-78a \n“
    - “-5\n“
    #include <stdio.h>
    int main() {
    int x,y,z; z = scanf(“%i-%i“,&x,&y); printf(“%i“,z);
    }
  • Zitat von man scanf

    All conversions are introduced by the % (percent sign) character. [...] Before conversion begins, most conversions skip white space [...] i Matches an optionally signed integer [...] Everything else matches only itself. Scanning stops when an input character does not match such a format character. Scanning also stops when an input conversion cannot be made [...] These functions return the number of input items assigned, which can be fewer than provided for, or even zero, in the event of a matching failure.


    Ist doch gar nicht so schwer. (Aus pädagogischen Gründen stimmt die Reihenfolge der zitierten Fetzen nicht ganz, bin ich nicht nett?)

    *plantsch*

  • hausuebung wird dir keiner machen, aber hinweise kannst du gerne haben:
    *) was ausgegeben wird kannst du dir ja einfach anzeigen lassen. lass einfach das programm laufen.
    *) was noch im stdin verbleibt kannst du dir ja auch anzeigen lassen (achtung: C-aehnlicher pseudocode)

    Code
    char rest[80];
    /* your scanf */
    fgets(rest, 80, stdin);
    for(i = 0; i < 80; i++)
       printf("ascii-code: %d\n", rest[i]);

    ansonsten: hoer auf Plantschkuh und lies die man-page.

    edit: testen am besten mit: echo -ne "tes \nt" | ./yourbin

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • ich verwende read/fread, da es besser mit beispiele, wie "\n4\n a\n-4-5 ", getestet werden kann, weil fgets nur bis "\n" (inklusive) liest

    Code
    int i, r; /* scanf and friends... */
       r = fread(rest, 1, 80, stdin);
        for (i =0; i < r; i++)
               printf("ascii-code: %d\n", rest[i]);


    -----------------

    Code
    char rest[80];
    /* your scanf */
    fgets(rest, 80, stdin);
    for(i = 0; i < 80; i++)
       printf("ascii-code: %d\n", rest[i]);

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!