Datei lesen und an bestimmer Stelle verändern

Manda

Erfahrenes Mitglied
Hallo Leute. Ich versuche gerade eine Datei an einer bestimmte Stelle einzulesen, diese dann bisschen zu verändern und wieder abzuspeichern.
Datei: test.csv
Sieht so aus:

++++++++++++++++++++++++++++++++++++++++++
Parameter:
++++++++++++++++++++++++++++++++++++++++++

W-wert : 100.00
I-wert : 0.015000
K-wert : 0.000002
Intervall - untere Grenze: 100.00
Intervall - obere Grenze: 1000.00
Schritte : 21
++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++
Parameter:
++++++++++++++++++++++++++++++++++++++++++

+--------------------------------------------------------+
|# F R I B P |
+--------------------------------------------------------+
|1. 100.0000 0.0129 0.1128 0.0129 83.4786 |
|2. 145.0000 0.0274 0.1632 0.0274 80.4773 |
|3. 190.0000 0.0476 0.2129 0.0476 77.4024 |
|4. 235.0000 0.0739 0.2615 0.0739 74.2303 |
|5. 280.0000 0.1067 0.3087 0.1067 70.9375 |
+--------------------------------------------------------+

Ich möchte eine Ausgabe haben, die so aussieht (nur den Teil verändern, der obere Teil soll weiterhin erhalten bleiben):
+--------------------------------------------------------+
|# F, R, I, B, P , |
+--------------------------------------------------------+
|1. 100.0000, 0.0129, 0.1128, 0.0129, 83.4786 |
|2. 145.0000, 0.0274, 0.1632, 0.0274, 80.4773 |
|3. 190.0000, 0.0476, 0.2129, 0.0476, 77.4024 |
|4. 235.0000, 0.0739, 0.2615, 0.0739, 74.2303 |
|5. 280.0000, 0.1067, 0.3087, 0.1067, 70.9375 |
+--------------------------------------------------------+
Also einfach an diesen Stellen ein Komma als Trennzeichen ergänzen. Ich glaube man sieht es hier nicht so gut, aber es soll eine Art Tabelle darstellen.
Jeder Buchstabe (F,R,I,B,P) gehört zu einer Spalte.

C:
int main(void)
{
    FILE *datei = NULL;   
        //liste(datei, ','); mit dem Trennzeichen "," aufrufen
    liste(datei);

    printf("\n\n");
    return 0;
}

void liste(FILE *datei)//Hier Parameter hinzufügen: char zeichen
{
    int c = 0;
    datei = fopen("test.csv", "r+");
   
    if(datei != NULL)
    {
        while( (c=fgetc(datei)) != EOF )
            putchar(c);
    }
    else
        printf("\nKonnte nicht gefunden werden");

    fclose(datei);
}
Leider wüsste ich nicht, wie ich an diese bestimmte Stelle komme und wie ich das komma dort reinschreien könnte. Es ist nicht notwendig, dass man auf der Konsole überhaupt was sieht. Was ich erreichn will ist nur, dass am Ende, wenn die Datei erstellt wurde, das vorhandene Überschrieben wird (also mit komma als Trennzeichen drin steht).

Könnt ihr mir tips geben, wie man sowas realsieren kann?
Gruß
Manda
 
Am besten ist vielleicht, immer ein komplette Zeile einzulesen.
Dann musst du immer prüfen, ob du nun an dem zu editierenden Block angekommen bist. Das kann man mit strncmp bewerkstelligen. Wenn dies der Fall ist, dann kannst du mit fscanf, fprintf und vielen unterschiedlichen Formatierungszeichen die Kommas einfügen (Immer Zeile für Zeile).

Das sollte für den Anfang helfen.

Viele Grüße
 
Zurück