关于fopen函数的基础例题。程序运行正常,为什么文件里却没有数据?
问题描述:
照着书上调用fopen函数的例题打的代码,但运行后文件中并没有数据
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char ch,filename[10];
printf("请输入所用的文件名:");
scanf("%s",filename);
getchar();
if(fopen(filename,"w")==NULL)
{
printf("cannot open file\n");
exit(0);
}
fp = fopen(filename,"w");
printf("%d\n",*fp);
printf("请输入一个准备存储到磁盘的字符串(以#结束):");
ch = getchar();
while(ch!='#')
{
fputc(ch,fp);
putchar(ch);
ch = getchar();
}
fclose(fp);
putchar(10);
return 0;
}
答
望采纳
答
关了重新打开才能看见
答
图中的txt文件已经是重新打开了的。
答
我电脑上是可以的,vscode
答
好的,谢谢
答
这里有问题
if(fopen(filename,"w")==NULL)
{
printf("cannot open file\n");
exit(0);
}
fp = fopen(filename,"w");
已经使用了fopen打开了这个文件而没有对文件指针进行保存,相当于第一次打开的文件指针丢失了,而操作系统这个时候已经认为这个文件处于打开状态,但是接下来你又调用了fopen函数,相当于打开已经打开了的文件。
正确的写法应当是
if ((fp = fopen(filename, "w+")) != NULL)
{
printf("cannot open file\n");
exit(-1);
}
其次,fp是文件指针,文件指针并不是文件描述符,FILE类型是一个结构体,因此如下的写法也是错误的:
printf("%d\n",*fp);
它是没有意义的