2012-04-21 44 views
4

我必須寫一個文件,如下所示:C:使用fwrite來寫字符到不同的線路

A 
B 
C 
D 
... 

需要被寫入到文件中不同的行字母表的每個字符。我有以下計劃,寫人物接二連三:

FILE* fp; 
fp = fopen("file1","a+"); 
int i; 
char ch= 'A'; 
for(i=0; i<26; i++){ 
    fwrite(&ch, sizeof(char), 1, fp); 
    ch++; 
} 
fclose(fp); 

我應該如何改變上述程序,每個字符寫入到一個新的生產線。 (我嘗試在每個字符後面寫入「\ n」,但是當我使用VI編輯器或ghex工具查看文件時,會看到多餘的字符;我正在尋找一種方法,以便vi編輯器完全按照上圖所示顯示文件)。

我試着用以下的第一FWRITE後:

fwrite("\n", sizeof("\n"), 1, fp); 

感謝。

+0

通過每個字符後寫作 「\ n」,你做其他的fwrite或者其他什麼東西? – Michael 2012-04-21 04:18:52

+1

您能否顯示寫入'\ n's的修改過的代碼?是否像'fwrite(「\ n」,sizeof(char),1,fp);'? – dasblinkenlight 2012-04-21 04:18:55

+0

我編輯過這些問題。 – Jake 2012-04-21 04:21:01

回答

7
fwrite("\n", sizeof("\n"), 1, fp); 

應該

fwrite("\n", sizeof(char), 1, fp); 

否則,你正在寫一個額外的\0這是你"\n"字符串常量的零終止(sizeof("\n")是二,沒有之一)的一部分。

+0

謝謝,請記住! – Jake 2012-04-21 04:25:02

2

你看到了什麼「額外字符」?您確實知道"a+"參數爲fopen會打開要添加的文件,以便您寫入文件末尾。你的意思是"w+",它會覆蓋文件?

你可以使用:

fputc((int)ch, fp); 
fputc((int)'\n', fp); 

甚至fprintf(fp, "%c\n", ch);