wie kann ich line feed (lf) in einer Datei schreiben



  • Hallo zusammen,

    ich möchte eine Textdatei schreiben. Die Zeilen getrennt mit line feed nicht mit endline oder line feed - carriage return.

    ich habe so geschrieben.

    char r= toascii(10);
    ofstream aufdatei;
    aufdatei.open("blabla.txt");
    aufdatei<< "blabla- zeile"<< r ;

    Wenn ich die blabla.txt nahher öffnen mit Hexaeditor sehe ich immer line feed- carriage return .

    Woran liegt es ?
    Wie kann ich line feed in einer datei schreiben?
    kann es daran liegen daß mein BS Windows.
    Die datei soll nachher unter Unix importiert werden.
    Danke für eure Hilfe



  • kann jemand mir helfen 😮



  • Probier mal:

    CString strFile = "c:\\temp\\mytext.txt";
    _file = fopen( strFile, "a+" );
    std::string bst = "Meine Zeile";
    bst += '\n';
    int i = fputs(bst.c_str(), _file);
    


  • ich glaube das geht nur wenn du die datei binär öffnest.



  • ich könnte nicht komplieren.
    _file nicht deklariert!!

    ich möchte ,daß ich eine normale Textdatei erzeugen.
    Die Zeilen in der Datei sollen mit line feed getrennt 0A Hexawert und nicht mit line feed + carriage return.

    Für jede Hilfe bin ich sehr dankbar.

    Zitat
    Wenn dein Haus aus Glas, werfe die Leute nicht mit Steine.



  • Da du im MFC-Forum bist, leg ich dir mal CFile ans Herz.
    Mit Open die Datei öffnen(Achtung: bei den Flags müssen 2 (!!!) Parameter per | übergeben werden (siehe MSDN), und dann mit write einfach deine char-Daten in die Datei schreiben, und nach jeder Zeile halt per Hand das "\n" auch mit schreiben lassen.



  • FILE *f = fopen("datei.txt", "wb");
    fputs("asdfg\r", f);
    fclose(f);

    und jetz troll woanders.



  • Hallo und danke für eure Teilnahme.

    ich habe gerade eben mit CFile propiert und es ist genau wir bei ofstream .
    Ich meine \n liefert mich 0A0D zerück ich möchte aber nur 0A.
    Überigens \r liefert 0D ich brauche aber 0A--> line feed ...

    Bitte hilf mir sonst werde ich verrückt... 🙄



  • ? was machst du?
    Ich hab das mit CFile gemacht und ich habe NUR das "\n" in der Datei, sehe ich in UltraEdit, und wenn ich das mit dem Editor anschaue habe ich auch keinen Zeilenumruch, weil halt das "\r" nicht mit dabei ist ...



  • file.Open(path,CFile::modeCreate | CFile::modeWrite)
    

    So öffne ich und das klappt. Kann es evtl an deinen Ausgangsdaten liegen, welche du schreíben willst?



  • CStdioFile File;
    if(File.Open("c:\\test.txt",CFile::modeCreate|CFile::modeWrite))
    {
    File.SeekToEnd();
    File.WriteString("eintext\n");
    File.WriteString("nocheintext");
    File.Close();
    }

    Mit Ultraedit
    eintext
    nocheintext
    65 69 6E 74 65 78 74 0D 0A 6E 6F 63 68 65 69 6E 74 65 78 74

    wie du siehst liefert 0A 0D trotzdem.



  • du musst die datei BINAER oeffnen!



  • Wie öffne ich die Datei Binaer



  • hab ich dir in meinem letzten post gezeigt.
    wenn du dir die muehe gemacht haettest...



  • Hast du die Datei ins DOS-Format konvertieren lassen von Ultra-Edit?
    Weil wenn ja, dann fügt der Editor das \r hinzu.

    Öffne die Datei mal im Standardeditor und schalte den Zeilenumbruch aus. Wenn jetzt alles in einer Zeile steht, dann ist nur das \n da 🙂



  • Ich habe die Datei nochmal in standard editor geöffnet und zeilenumbruch ausgeschaltet...leider blieb 2 Zeilen und nicht in einer Zeile.

    c.rackwitz schrieb-->
    hab ich dir in meinem letzten post gezeigt.
    wenn du dir die muehe gemacht haettest...

    ich bekomme nicht dein quellcode mit.



  • nimm mal CFile anstatt CStdioFile



  • ooh..

    ich habe die Datei mit Ultraedit konvertiert von dos in unix dann wieder nicht in dos modegeöffnet und es hat geklappt habe ioch jetzt nur 0A.

    Eine Frage noch wenn meine Datei, die ich mit MFC erzeugt habe ,direkt an unix empfänger ohne konvertierung von meiner Seite schicke, sieht er dann nur 0A oder ?



  • MSDN schrieb:

    One access permission and a text-binary specifier are required;

    und

    MSDN schrieb:

    Stream files are buffered and can be opened in either text mode (the default) or binary mode.

    Da du diesen Flag nicht angibts, vermute ich mal, die KLasse arbeitet im Textmodus, und daher kommt das \r. Also entweder explizit den Binary-Mode angeben oder gleich nur mit CFile arbeiten



  • Hi,

    Du hast recht .....

    Ich habe es mit CFile . und war genau was ich brauchte.

    Ich schaffe immer mit ofstream und heute habe ich was neues gelernt.

    Vielen Dank für die Hilfe.

    Zitat von mir:

    Ich freue mich



  • CStdioFile::WriteString()
    fügt immer Zeilenweise einen String hinzu, also kein wunder das du /n/r drin stehen hattest


Anmelden zum Antworten