// 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