// Write a file using fputs()
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#undef EOF
#define EOF "#"
int main(int argc, char *argv[])
{
if(argv[1] == NULL)
exit(EXIT_FAILURE);
FILE *file = fopen(argv[1], "w")
char *str;
while(strcmp(str, EOF))
fputs(str, file);
fclose(file);
exit(EXIT_SUCCESS);
}
當我運行它時,在指定我的argv [1]的文件內容的開始處總是有一個空格。爲什麼這樣?C - 文件處理和EOF
還怎麼輸入EOF?每次按
control + D,
它將其作爲另一個輸入。 我將「#」定義爲EOF,但它在文件內容的末尾。另外,如果我按
control + Z
,然後嘗試使用TextMate中打開它,它說,文件大小是巨大的(一旦它表明2825 MB!)
該代碼已損壞(您正在使用未初始化的字符串指針)。什麼是您使用的真實代碼? – trojanfoe 2012-08-09 06:57:34
你試過'feof(file)'嗎? – Geoffrey 2012-08-09 06:57:53
@trojanfoe:str未初始化。真正的代碼檢查argv [1]是否爲NULL。休息和這裏給出的一樣。 – 2012-08-09 07:00:07