Hallo zusammen. Wie die Überschrift schon sagt, möchte ich eine Datei auslesen, Zeile für Zeile.
Mir ist bewusst das dieses Problem hier schon mehrfach behandelt wurde, allerdings helfen mir all die Threads nicht weiter..
Kurz ein paar Infos: Ich arbeite mit einem Microcontroller (AT90USB1286), der einen externen Speicher (8MB) hat. Dieser kann via USB benutzt werden.
Die eigentliche Aufgabe des Programms soll es sein, ein Bild Zeile für Zeile auszulesen und den Wert an ein Display zu geben. Für den Anfang hab ich erstmal eine Text Datei erstellt und Drei Zeilen mit verschiedenen Werten beschrieben.
Hier mein momentaner Code:
Das Problem ist, ich kann jede Zeile auslesen, indem ich z.B. Dreimal fgets(); eingebe, liest er mir die Dritte Zeile aus. Bei Fünfmal die fünfte Zeile usw..
Aber das Bild welches ich auslesen möchte, besteht aus mehreren Tausend Zeilen und ich bin mir sicher das es eine total einfache Lösung für dieses Problem gibt, das ich in der Schleife einfach einen Wert erhöhe und er dann in die nächste Zeile springt.
Ich benutze das AVR Studio 4.16 und lese über „Watch“ den get[] Wert aus. Ich schaffe es aber die Werte einzeln einzulesen. Es geht auch wenn ich get2[]; get3[] usw. benutze aber das ist ja nicht Sinn der Sache.
Ich arbeite noch nicht lange mit C und versuche es zu verbessern, aber bei diesem Problem stehe ich vollkommen auf dem Schlauch, wie gesagt, wahrscheinlich ist das Problem für die meisten nicht mal die Mühe wert, aber mich treibt es an den Rand der Verzweiflung.
In einem anderen Thread wurde das ganze so gelöst:
Trotzdem liest das Programm nur eine Zeile aus (die letzte in diesem Fall), ich möchte ungern meinen Code mit Variablen die mit 1000 enden befüllen..
Kann mir jemand Helfen?
mfg
Mir ist bewusst das dieses Problem hier schon mehrfach behandelt wurde, allerdings helfen mir all die Threads nicht weiter..
Kurz ein paar Infos: Ich arbeite mit einem Microcontroller (AT90USB1286), der einen externen Speicher (8MB) hat. Dieser kann via USB benutzt werden.
Die eigentliche Aufgabe des Programms soll es sein, ein Bild Zeile für Zeile auszulesen und den Wert an ein Display zu geben. Für den Anfang hab ich erstmal eine Text Datei erstellt und Drei Zeilen mit verschiedenen Werten beschrieben.
Hier mein momentaner Code:
Code:
void main()
{
const char get[128];
// USB is connected-> don't log
if(Is_usb_vbus_high())
{
return;
}
FATFS fatfs;
FIL fp;
f_mount(0,&fatfs);
f_open(&fp,"hallo.txt",FA_OPEN_ALWAYS | FA_READ);
while( !feof(&fp))
{
fgets(&get,128,&fp);
}
f_close(&fp);
f_mount(0,NULL);
}
Das Problem ist, ich kann jede Zeile auslesen, indem ich z.B. Dreimal fgets(); eingebe, liest er mir die Dritte Zeile aus. Bei Fünfmal die fünfte Zeile usw..
Aber das Bild welches ich auslesen möchte, besteht aus mehreren Tausend Zeilen und ich bin mir sicher das es eine total einfache Lösung für dieses Problem gibt, das ich in der Schleife einfach einen Wert erhöhe und er dann in die nächste Zeile springt.
Ich benutze das AVR Studio 4.16 und lese über „Watch“ den get[] Wert aus. Ich schaffe es aber die Werte einzeln einzulesen. Es geht auch wenn ich get2[]; get3[] usw. benutze aber das ist ja nicht Sinn der Sache.
Ich arbeite noch nicht lange mit C und versuche es zu verbessern, aber bei diesem Problem stehe ich vollkommen auf dem Schlauch, wie gesagt, wahrscheinlich ist das Problem für die meisten nicht mal die Mühe wert, aber mich treibt es an den Rand der Verzweiflung.
In einem anderen Thread wurde das ganze so gelöst:
Code:
FILE *f = fopen( "test.txt", "r" ) ;
while( !feof( f ) )
{
fgets( buffer, sizeof( buffer ), f ) ;
// hier den String verarbeiten
}
Kann mir jemand Helfen?
mfg