#include <stdio.h>
int main ()
{
FILE * pFile;
char ch;
pFile = fopen ("G:\\ IJLAL.txt","w+");
while((ch = getchar())!=EOF)
putc(ch,pFile);
fclose(pFile);
return 0;
}
你可以指定问题???
我对 fopen 功能完全不熟悉。
请帮我解决这个问题
答案 0 :(得分:2)
getchar()
函数返回int
值,而不是char
。通过将其强制转换为char
变量,您无法检测到EOF。
只需将char ch
更改为int ch
即可。*
\\
被编码为单个反斜杠字符?答案 1 :(得分:1)
根据C99标准(7.19.1.3):
EOF,扩展为整数常量表达式,类型为int和 一个负值,由几个函数返回以指示 文件结束,即不再有来自流的输入;
关键是EOF超出unsigned char
的范围。我确信这是故意这样做的,所以仍然可以返回所有256个基本和扩展的ASCII字符,并且不同于EOF
答案 2 :(得分:0)
你可以试试这个。
1 - 检查fopen()返回值 - &gt; print errno value(perror)
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
int c;
bool run;
FILE *fd;
run = true;
fd = fopen("/tmp/file.txt", "w+");
if (fd == NULL)
{
perror("fopen");
return (1);
}
while (run == true)
{
c = getchar(); // Press ctrl + D for exit
run = (!feof(stdin) && !ferror(stdin));
if (run == true)
putc(c, fd);
}
fclose(fd);
}
如果您愿意,可以看到link。