Frage zum scanf befehl



  • hi
    hab ne frage zum scanf befehl

    der benutzer soll zb ein produkt eingeben z.b "Pentium4 3GhZ FSB200" also das ganze mit abständen usw
    wenn ich jetzt allerdings scanf("%s", &artikel); mache geht das leider nicht
    gibt es eine ähnliche funktion die es auch erlaubt abstände zwischen den wörtern zu machen?

    ich will nämlich dann alles was in der variable "artikel" steht in eine datei schreiben

    hoffe jemand kann mir weiterhelfen



  • schau dir mal fgtes an



  • mhm hab mir den befehl angesehn. ist aber nicht das richtige (soweit ich es verstanden hab liest er einen string aus datei)
    ich will aber das der benutzer was über die tatstatur eingibt (z.b "Pentium4 3Ghz Fsb800") und dass das ganze dann in einem string gespeichert wird um diesen dann per fprintf in eine datei zu schreiben



  • Genaugenommen wird keine Datei erwartet sondern ein Stream. Da gibst du stdin an. Das ist der Standard-Eingabestrom, wovon auch scanf usw. liest.



  • Hier ist mal ein Beispiel für "fgets".

    printf("\nVon welcher Firma ist Windows?\n");
    
    	fgets(antwort1, 100, stdin);
    	if((strcmp(richtig1, antwort1)) == 0)
    		printf("\nRICHTIG!\n");
    	else
    		printf("\nLeider flasch!\n\n");
    


  • leider geht es immer noch nicht
    hier mal der code teil

    FILE *datei;
    char artikel[100];
    datei=fopen("C:/test.txt", "w");
    printf("Eingeben:");
    fgets(artikel, 100, stdin);
    fprintf(datei, "%s", artikel);
    

    immer wenn der satz Eingabe: kommt überspringt er die eingabe und macht danach normal weiter. also ich kann gar nichts eintippen



  • Vermutlich ist im Eingabebuffer noch ein '\n' von vorher, hatte diese Probleme auch sporadisch.
    Am besten packst du das fgets in eine do while Schleife

    do
    {
    fgets(artikel, 100, stdin);
    } while('\n'==artikel[0])
    


  • jetzt funktionierts!
    danke sehr


Anmelden zum Antworten