Text einlesen ???



  • Nabend leutz

    ich habe folgendes prob. ich habe mir nen programm geschrieben, welches ine datei erstellen kann ... wenn diese datei eine ".txt" datei is, soll man die möglichekit haben diese Datei auch mit nem text zu versehn.

    nun zu meinem problem, wie kann ich zum sp "hallo hier is mr.x" einlesen? in die datei wir dann nur bis zum "hallo" geschriebn. also ich denke mal es liegt am leerzeichen aba wie kann ich dann ganze sätze einlesen ???

    wäre toll wenn ihr mir helfen könntet ...

    thx





  • thx für deine antwort 🙂 ...

    hab mir alles durch gelesen und es probiert

    also wenn ich das richtig gelesen habe, dann kann man mit diesem befehl zeilen aus einer datei lesen. ich suche aba nach einem befehl mit dem man ganze texte in der konsole einer variablen zuweisen kannn um sie nacher dann in eine datei zu schriebn.



  • EXBS schrieb:

    also wenn ich das richtig gelesen habe, dann kann man mit diesem befehl zeilen aus einer datei lesen.

    Nicht ganz richtig. Du kannst damit aus einem stream lesen. Dieser stream _kann_ eine Datei sein, muss aber nicht. Der stream dür die Standardeingabe heisst stdin. Das einfach als letzten Parameter verwenden.



  • nimm als datei einfach stdin...
    und noch als ergaenzung die stichworte: 'while' und '!= '\n'' 🙂

    edit: mist... zu langsam 😃



  • also ich habe jetzt als stdin genommen habe aber das problem, dass, wenn ich "hallo wie gehts" eingebe in die datei nur " wie gehts"geschriebn wird!

    wie kann ich diesen fehler behebn, ich habe versucht den text 2mal einzulesen. einmal mit scnaf und einmal mit fgets (stdin) und die beiden dann zusammen zusetzen geht aba irgendwie net!!! 😕 😕



  • Ähmmm, zeig mal den "Code" 😉



  • void write_in_data(void)
    {
         char text[128];
    
         FILE *fp;
         printf("gib den Text ein\n");
         scanf("%s", &text);
         fp = fopen(FileName, "w");
         if (fp != NULL)
         {
                fgets(text, 128, stdin);
                puts(text);
                fprintf(fp ,"%s", text);
                fclose(fp);
         }
    }
    

    hier is er ... ich hoffe das hilft nen bisschen 🙂



  • void write_in_data(void)

    {
         char text[128];
    
         FILE *fp;
         printf("gib den Text ein\n");
         scanf("%s", &text);
         fp = fopen(FileName, "w");
         if (fp != NULL)
         {
                fprintf(fp ,"%s", text); //alles vor dem 1sten leerzeichen
                fgets(text, 128, stdin);
                puts(text);
                fprintf(fp ,"%s", text); //der rest
                fclose(fp);
         }
    }
    

    hab ich jetzt als lösung, allerdings denk ich mir ma das das echt ziemlich umständlich is ... als erstes wird alles vor dem ersten leerzeichen eingetragen undann der rest ... nja was soll ... danke für eure hilfe ... evtl findet hr ja ne "bessere" lösung 🙂 🙂

    thx



  • ersetze einfach das scanf() durch fgets() und entferne das 2. fgets() 😉


Log in to reply