关于fopen函数的基础例题。程序运行正常,为什么文件里却没有数据?

关于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);

它是没有意义的