C Löschen des letzten n Zeichen aus der Datei

Ich löschen müssen, um die letzten n Zeichen aus einer Datei mit C-code. Bei fist ich versuchte, verwenden '\b', aber es gibt einen Segmentation Fault. Ich habe gesehen, interessante Antworten auf ähnliche Fragen hier und hier, aber ich würde es vorziehen, zu verwenden mmap Funktion, um dies zu tun, wenn es möglich ist. Ich weiß, es könnte einfacher sein, um die Datei kürzen durch erstellen einer temp-Datei, und schreiben chars die temp bis auf einige offset der original-Datei. Das problem ist, dass ich nicht scheinen, um zu verstehen, wie mmap Funktion, um dies zu tun, nicht erkennen kann, welche Parameter ich übergeben muss um die Funktion, speziell address, length und offset. Von dem, was ich gelesen habe, sollte ich verwenden MAP_SHARED im flags und PROT_READ|PROT_WRITE im protect.

Definition der Funktion sagt:

void * mmap (void *address, size_t length, int protect, int flags, int filedes, off_t offset)

Hier ist mein main:

int main(int argc, char * argv[])
{
    FILE * InputFile;
    off_t position;
        int charsToDelete;

    if ((InputFile = fopen(argv[1],"r+")) == NULL)
    {
            printf("tdes: file not found: %s\n",argv[1]);
    }
    else
    {
                charsToDelete = 5;
        fseeko(InputFile,-charsToDelete,SEEK_END);
        position = ftello(InputFile);
        printf("Pos: %d\n",(int)position);
        int i;
        //for(i = 0;i < charsToDelete;i++)
        //{
        // putc(InputFile,'\b');
        //}
    }
    fclose(InputFile);
    return 0;
}
InformationsquelleAutor anairinac | 2013-06-09
Schreibe einen Kommentar