嗨我試圖不使用fopen(文件,「w」)覆蓋C中的文件;試圖不覆蓋C文件?
我的問題是該文件已經存在爲一個10 MB的文件,但是當我使用fopen時,該文件最終變爲1KB。我想寫一些文件,但我希望它保持相同的大小。我怎麼做到這一點?我看到「a +」將文件附加到文件的末尾,但如果我想在文件的開始處寫入文件而不擴大文件大小,該怎麼辦?這只是一個空文件
另外,有沒有辦法用C創建一個具有一定大小(如10MB)的文件?
嗨我試圖不使用fopen(文件,「w」)覆蓋C中的文件;試圖不覆蓋C文件?
我的問題是該文件已經存在爲一個10 MB的文件,但是當我使用fopen時,該文件最終變爲1KB。我想寫一些文件,但我希望它保持相同的大小。我怎麼做到這一點?我看到「a +」將文件附加到文件的末尾,但如果我想在文件的開始處寫入文件而不擴大文件大小,該怎麼辦?這只是一個空文件
另外,有沒有辦法用C創建一個具有一定大小(如10MB)的文件?
是的,這是可能的。通過打開它r+
你打開它的'閱讀和寫作'(而w
打開它寫新鮮)。
關於你提到的其他問題:打開一個文件,w
和寫入1000個1024字節的塊像這樣的文件:
FILE *fp = fopen("file", "wb");
if(fp) {
int i = 0;
char Buf[1024];
for(; i < 1000; ++i)
fwrite(Buf, 1, 1024, fp);
fclose(fp);
}
這一次,則fopen標誌爲您提供:
r
- >打開文件供閱讀。 (文件保持不變)
w
- >打開文件進行寫入。 (文件被擦除)
a
- >打開要追加的文件。 (文件保持不變,文件指針移動到終點)
除此之外,你可以添加一些額外的選項:
b
- >打開文件的二進制,忽略像\ n
格式化字符 t
- >以文本方式打開文件,特別是在Windows下將\ n解析爲\ r \ n。
打開文件,然後使用fseek
將您的位置設置爲文件的開頭。
編輯:打開時使用r+
模式。從man fopen
:
r+ Open for reading and writing. The stream is positioned at
the beginning of the file.
他想保持文件的大小相同。 – 2013-05-07 20:13:10
是的,更正了。 :) 謝謝。 – 2013-05-07 20:15:42
* 一種方式來創建在C文件具有一定規模(如10MB)?
這樣的:
#include <stdio.h>
int main(void){
const char *TenMBfile = "TenMB";
FILE *fp;
fp=fopen(TenMBfile, "w");
fseek(fp, 10*1024*1024-1,SEEK_SET);
fputc(0, fp);
fclose(fp);
return 0;
}
惠!我曾在一個項目中添加文字或'博客'貼在我的網頁上,我發現了一個非常酷的方式來做到這一點。 爲此,我將使用HTML文件和我的程序。 HTML文件:
<html>
<body>
<p> Hey this is the asssdsadasdsadas paragraph</p><br>
<p> Hey this is the asssdsadasdsadas paragraph</p><br>
</body>
</html>
C文件:
printf("Please enter the number of bytes to write from in %s .\n", argv[0]);
int offset;
scanf("%d", &offset);
fseek(fp, -offset, SEEK_END);
strcat(argv[1], "<br>\n\n");
fprintf(fp, "%s", argv[1]);
fprintf(fp, "</body>\n</html>\n");
HTML解釋:
C解釋:
所以...這是你如何做到這一點。
這樣比較好。總之,請把問題編輯成更好的格式。改變問題的標題。我很懶,很困。 – 2013-05-07 20:19:24