Forum: Mikrocontroller und Digitale Elektronik Linefeed beim Schreiben auf SD


von Pedro (Gast)


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

von Philipp B. (philipp_burch)


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'.

von Pedro (Gast)


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();
  }
}

von holger (Gast)


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 ?

von tcfkat (Gast)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.