c中的文件处理代码有什么问题?
What is wrong with this code of file handling in c?
我正在尝试从终端向文件写入内容。正在创建文件,但内容尚未写入文件。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char *argv[])
{
FILE *fp;
fp=fopen(argv[1],"w");
char ch;
while((ch=getchar())!=EOF)
{
putc(ch,fp);
}
fclose(fp);
return 0;
}
如果您不发出 EOF 信号(Ctrl+Z 在 Windows 和 Ctrl+D 在 Linux), 然后循环将继续执行直到它接收到该信号。
如果你试图在程序还在执行的时候用自己的眼睛读取文件,那么文件流将不会关闭(fclose(fp);
不会执行),因此文件看起来像你清空,即使内容会在文件流关闭时显示给你。
以下工作正常:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char *argv[])
{
FILE *fp;
fp=fopen(argv[1],"w");
char ch;
while(1)
{
ch = (char)getchar();
putc(ch,fp);
if(ch == '.') break;
}
fclose(fp);
return 0;
}
我正在尝试从终端向文件写入内容。正在创建文件,但内容尚未写入文件。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char *argv[])
{
FILE *fp;
fp=fopen(argv[1],"w");
char ch;
while((ch=getchar())!=EOF)
{
putc(ch,fp);
}
fclose(fp);
return 0;
}
如果您不发出 EOF 信号(Ctrl+Z 在 Windows 和 Ctrl+D 在 Linux), 然后循环将继续执行直到它接收到该信号。
如果你试图在程序还在执行的时候用自己的眼睛读取文件,那么文件流将不会关闭(fclose(fp);
不会执行),因此文件看起来像你清空,即使内容会在文件流关闭时显示给你。
以下工作正常:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char *argv[])
{
FILE *fp;
fp=fopen(argv[1],"w");
char ch;
while(1)
{
ch = (char)getchar();
putc(ch,fp);
if(ch == '.') break;
}
fclose(fp);
return 0;
}