String in stdin schreiben



  • Hallo,

    Wie kann ich einen String in stdin schreiben?
    Einzelne chars gehen ja mit ungetc().
    Gibt es also eine ähnliche funktion für ganze Zeichenfolgen?

    gruß markus



  • stdin ist schreibgeschützt.



  • hai80 schrieb:

    Hallo,

    Wie kann ich einen String in stdin schreiben?
    Einzelne chars gehen ja mit ungetc().
    Gibt es also eine ähnliche funktion für ganze Zeichenfolgen?

    gruß markus

    nein. Da musst du selber eine machen.

    nah schrieb:

    stdin ist schreibgeschützt.

    nope. du kannst in stdin Sachen zurückschieben.

    #include <stdio.h>
    #include <string.h>
    
    void back_to(const char *x, FILE *f)
    {
        int i, len;
        len = strlen(x);
        for(i = len -1; i>= 0; --i)
            ungetc(x[i], f);
    }
    
    int main(void)
    {
        int i; 
        char input[1024];
        for(i = 0; i < 2; ++i)
        {  
            printf("Enter: ");
            fgets(input, sizeof(input), stdin);
            printf("Output: %s",input);
            back_to("Hehehehehehe......\n",stdin);
        }  
        return 0; 
    }
    

    Ausgabe:

    $ ./b
    Enter: pablo
    Output: pablo
    Enter: Output: Hehehehehehe......
    


  • hai80 schrieb:

    Einzelne chars gehen ja mit ungetc().

    Das ist schon ein Trugschluss. Garantiert ist nur, dass man ein char zurückschreiben darf, und selbst das nur wenn es das zuletzt gelesene Zeichen ist.


Anmelden zum Antworten