www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Linefeed beim Schreiben auf SD


Autor: Pedro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kennt jemand von Ihnen vielleicht einen Befehl,
um eine neue Zeile einzügen ?
Ich würde gerne formatiert in eine .txt schreiben.
Das normale reinschreiben kann ich bereits...

Danke,
der Pedro

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schätze mal, du verwendest C, da kannst du Linefeed so erzeugen: 
'\n' als einzelnes Zeichen (Typ char) oder "blub\n" in einem String. Für 
Windows könnte auch noch ein Carriage-Return von Nöten sein, das wäre 
dann entsprechend '\r'.

Autor: Pedro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ja richtig, ich schreibe in C...
aber das \n habe ich schon probiert, das geht leider nicht...
ebenso wenig funktioniert das \r :(

hier die funktion:

//###################################################################### 
#############
void WriteString2File(char *name, unsigned char *buffer, U16 bufsize)
//###################################################################### 
#############
{
 unsigned long i;
 unsigned char result;

 result=Fopen(name,F_WRITE);
 if(result==F_OK)
  {

   for(i=0; i<1; i++)
    {
     if(Fwrite(buffer,bufsize)!=bufsize) result=F_ERROR;

   if(result==F_ERROR) break;
    }
   Fclose();
  }
}

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fwrite interessiert es herzlich wenig was für
Daten im buffer sind. Es frisst keine \n oder \r auf.
Ich denke mal bufsize ist bei dir zu klein.
Wie bestimmst du bufsize für deinen String ?

Autor: tcfkat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x0A = Linefeed (LF)
0x0D = Carriage return (CR)
Die Interpretation von "\n" in sprintf()/fprintf()/printf() ist OS und 
Library-abhängig. Unter MS-DOS (aka Windows) erzeugt "\n" die Sequenz 
CR/LF, unter Unix nur CR, unter Mac nur LF (glaube ich), so sind 
Textdateien jedenfalls unter den jeweiligen OSsen formatiert. Ist immer 
das Problem, wenn man Textdateien von Unix nach MS-DOS konvertiert, 
CR/LF muss CR bzw. CR muss CR/LF werden.
D.h. unter Unix muss man "\r\n" schreiben, damit es unter MS-DOS passt. 
Nur CR erzeugt man mit "\r".

Wie holger schon schreibt, die Funktion macht keine Interpretation der 
Escape-Sequenzen, also von Hand die CR/LF in den Buffer schreiben...
Der C-Code ist etwas...hmm...strange... warum eine for-Schleife, wenn 
die eh nur einmal durchlaufen wird?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.