coolkaiserabc
Goto Top

C - Datei Laden und text ersetzen

Hallo

Ich hab wieder eine Hausaufgabe und finde leider keine ordentliche Lösung...

Ich will eine Datei laden 6 Zeichen nach vorn springen und die folgenden 6 Zeichen mit X ersetzen. So hätte ich es mir gedacht (funktioniert aber nicht ....)
#include <stdio.h>

int main()
{
    int i;
    char pfad = "Ausgabe.000";  
    char c;

    FILE *Datei;
    Datei = fopen(pfad,"r+");  

    if(NULL == Datei)
        {
            printf("Datei konnte nicht gelesen werden\n");  
            //Datei muss immer geschlossen werden
            fclose(Datei);
            return 0;
        }

    for(i = 0; i < 6 ; i++)
    {
        c = fgetc(Datei);
    }

    for(i = 0; i < 6; i++)
    {
        fprintf(Datei, "%c",'X');  
    }

    fclose(Datei);

    return 0;

}

Gibt es so eine Lösung? Oder muss ich die ganze Datei Laden, zwischenspeichern, dann ersetzen, und wieder neu schreiben/speichern?

Danke für eure Hilfe

Content-ID: 667034

Url: https://administrator.de/contentid/667034

Ausgedruckt am: 24.11.2024 um 20:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 24.05.2021, aktualisiert am 25.05.2021 um 15:35:51 Uhr
Goto Top
moin,

Wieder zu faul Bücher zu wälzen?

https://www.programiz.com/c-programming/c-file-input-output

Wenn man es Dir vorkaut, wirst Du es nie lernen Probleme selbständig zu lösen.

lks

PS: Hast geschaut, welches Ergebnis Dein Lösungsansatz liefert und was der Fehler sein könnte?

PPS: Funktioniert nicht ist keine Hilfe beim Fehlersuchen. Du solltest genau schauen (und hier schreiben), was das Ergebnis ist und inwieweit das von gewünschten Ergebnis abweicht.
rubberman
rubberman 25.05.2021 um 15:21:05 Uhr
Goto Top
//Datei muss immer geschlossen werden
Eine Datei die geöffnet wurde, ja. NULL, nein.

Gibt es so eine Lösung?
Sicher. Datei möglichst im Binärmodus öffnen, mit fseek die Anzahl Zeichen nach vorn laufen, die übersprungen werden sollen und mit bspw. fwrite o.Ä. schreiben.

Steffen
Lochkartenstanzer
Lochkartenstanzer 25.05.2021 um 15:34:08 Uhr
Goto Top
Zitat von @rubberman:

//Datei muss immer geschlossen werden
Eine Datei die geöffnet wurde, ja. NULL, nein.

Gibt es so eine Lösung?
Sicher. Datei möglichst im Binärmodus öffnen, mit fseek die Anzahl Zeichen nach vorn laufen, die übersprungen werden sollen und mit bspw. fwrite o.Ä. schreiben.

Deswegen mein HInweis auf "Literatur zu Rate ziehen" und mein Link oben. face-smile

lks