2013-06-25 11 views
1

我無法使這個fseek()函數在我的代碼中工作。我寫的文字並不是從我指出的角度開始的,我不知道爲什麼。它應該從\ n開始寫入,它只是覆蓋所有的文本文件。即使我打開它a它只是不會去我通過參數命令。文件程序 - fseek不能正常工作

fclose(file); 
    FILE *file_a = fopen("ex6.txt", "w"); 

    fseek(file_a, -1, SEEK_END); 

    puts("Write text to add:"); 
    while((letter = getchar()) != '\n') 
    { 
     fputc(letter, file_a); 
    }; 

發生了什麼事?爲什麼不工作?

+0

如果你想要文件的結尾,我希望你想通過'0'fseek。在結束之前'-1'將是1個字節。 –

+0

你是否試圖在文件末尾插入文件而不是追加到最後? –

+0

對不起,信息是錯過的。我想添加文本,可以在結束前說2個字符,所以想象這是我的文件內容:「hello \ 0」 我想插入信息「hell | o \ 0」,覆蓋「o \ 0」並把它放在我自己的測試,如「是啊」,最終產品將是:「地獄是啊」。 但它就像fseek不符合我的要求,即使我把參考數字設置爲正數...... –

回答

1

導航到絕對僅在文件以二進制模式打開時才起作用。當它以文本模式打開時,fseek()不能導航到文件中除0(文件的開頭)之外的絕對位置,並且嘗試這樣做會導致未定義的行爲。但是,您可以導航到由ftell()返回的文件中的引用。原因是由於某些操作系統處理某些字符;有些實現允許它,但是POSIX不會強制它。

我知道你在評論中解決了這個問題,這只是爲了關閉。