Eingabe in *.txt speichern



  • Habe ein Problem und zwar möchte ich gerne das eine eingabe
    in einer *.txt Datei gespeichert wird!

    Hab schon mit fwrite und fputc rumgebastelt aber irgendwie funzt das nicht 😞

    Könnte mir vielleicht jemand sagen wie ich das mache
    😕



  • Hi,

    fwrite() würd ich nicht unbedingt für eine Textdatei nehmen, daß ist besser für binäre Daten geeignet.

    Probier doch mal fputs();

    int main(int argc, char *argv[])
    {
        FILE *datei;
        char *text="Hallo";
    
        datei = fopen("text.txt","w");
        fputs( text,datei);
    
        fclose(datei);
    
      return 0;
    }
    
    grüße Con@n
    


  • Bekomme die Fehlermeldung "Speicherzugrifsfehler"

    Welchen wert muß ich den bei scanf einfügen, %d ist für integer und welcher ist für Zeichenketten. 😕



  • Habs herrausgefunden!

    scanf("%s", notiz);
    

    müßte eigentlich richtig sein!

    Bekomme aber immer noch die Fehlermeldung 😕



  • nnotiz mus sauch auf einen gültigen Speicher zeigen. Du kannst z.B. per malloc ein wenig speicher reservieren, musst aber dann aufpassen, dass der Benutzer auch maximal soviele Zeichen eingibt, wie du Platz reserviert hast 🙂



  • So hab wieder ein bischen getüftelt! 🙂
    Nun wird die Zeichenkette von notiz auch übertragen und in die Datei geschrieben.

    Aber wie soll es anders sein, gibt es jetzt wieder ein neues problem.
    Die Eingabe wird nur richtig geschrieben wenn sie ohne Leerzeichen erfolgt.

    why
    😕

    Weiß leider nicht was malloc ist, bin erst seit ein paar Tagen dabei c zu lernen.
    Was man nicht alles macht wenn man langeweile hat 😃



  • Ähm, ja.

    Dann würde ich mal vorschlagen, Du verschiebst das mit den Dateien noch ein wenig, und beschäftigst Dich erst mal mit grundlegenderen Dingen, wie Eingabe über die Tastatur, ausgabe auf dem Bildschirm, Zeiger und Kontrollstrukturen. Die sind für den Anfang ein wenig besser. 🙂

    grüße Con@n



  • Hast w*****einlich recht, erst mal kleine Brötchen backen.
    Dann werd ich jetzt erst mal ein bischen im schlauen Buch
    nachlesen.

    trotzdem thx
    :p



  • ups falscher smilie

    🙂



  • für den fall, dass du das prob noch nicht gelöst hast...
    scanf liest standardmässig nur bis zu speziellen zeichen,
    es bricht also bei leerzeichen u.a. ab.

    lösung: definiere es zum beispiel so:
    scanf("%[^\n]s",string);
    damit wird erst bie einem newline zeichen abgebrochen (kannst
    beliebige ¨zeichen einfügen, die dann alle zum leseabbruch führen)

    z.B. würde:
    scanf("%[^a\n]s",string);
    das einlesen bei dem ersten auftreten eines "a" oder eines newlinezeichens abbrechen.



  • scanf ist böse
    und so eine kryptische syntax um mit scanf die ganze zeile zu lesen ist noch böser

    am besten ist fgets



  • Original erstellt von Shade Of Mine:
    **scanf ist böse
    **

    Warum? 😕



  • Original erstellt von ppc:
    Warum? 😕

    Weil man bei fgets eine genaue Kontrolle über die Anzahl der einzulesenen Zeichen hat - wurde deswegen auch schon mal belehrt 😃 🙄



  • char *fgets(char *s, int size, FILE *stream);

    Du meinst wohl scanf und co....



  • oh, tschuldigung...
    ich habe anstatt "eine genaue Kontrolle" ""keine genaue kontrolle" gelesen.



  • scanf und co sind nicht böse!!!
    die lieben kleinen sind total praktisch...
    oder wie willst du nen string formatieren???

    ok... die anwendung um eine zeile einzulesen
    ist vielleicht etwas dämlich... aber es geht.
    und für alle anderen sachen eignen sich die
    dinger super



  • Original erstellt von Acid-Sky:
    **scanf und co sind nicht böse!!!
    die lieben kleinen sind total praktisch...
    oder wie willst du nen string formatieren???
    **

    Buffer overflows sind boese - und scanf ist gut zum buffer overflown geeignet.

    lieber zuerst fegts machen und dann sscanf auf den string - das ist sicherer, es sei denn du schreibst gerne unsichere software


Anmelden zum Antworten