爱收集资源网

C语言代码突然失效,打开文件居然失败了?

网络整理 2023-09-27 23:02

大家好,我是疯狂的比特,一个每晚在互联网上种花和砍柴的程序员 今天给你们分享一个C语言初学者常见的一个问题。

问题

经常有人问我,我的C语言代码好好的,怎么就打开文件失败了呢? 我们先来瞧瞧代码吧

#include 
#include 
int main()
{ 
   
	FILE* pfRead = fopen("test.txt", "r");
	if (pfRead == NULL)
	{ 
   
		printf("打开文件test.txt失败啦\n");
		exit(1);
	}
	//读写文件
	//to do
	
	//关闭文件
	fclose(pfRead);
	pfRead = NULL;
	return 0;
}

复制

因为这儿fopen打开文件的形式是”r”,所以我们要保证文件存在! 那这儿我们首先创建一个test.txt这样名子的文件在工程的目录下。 比如:

在这儿插入图片描述

然后我们运行程序 请看结果:

在这儿插入图片描述

这是为什么呢? 明明文件存在,代码也没问题! 明明文件存在,代码也没问题! 明明文件存在c语言无法打开源文件,代码也没问题! 怎么结果就是错了呢? 一定是昨晚写代码没看黄历…

c语言无法打开源文件_c语言无法打开源文件_c语言无法打开源文件

在这儿插入图片描述

好了,这是忽然想起来,C语言还有一个报告错误信息的函数perror哦~

void perror ( const char * str );

复制

参考文档 这个函数可以在库函数发生错误的情况下,报告当前库函数使用发生错误的诱因。

这里既然我们发觉fopen函数打开文件失败了,就可以在fopen函数后报告一下错误的缘由是哪些,接下来改代码如下:

#include 
#include 
int main()
{ 
   
	FILE* pfRead = fopen("test.txt", "r");
	if (pfRead == NULL)
	{ 
   
		//改变:这里并没有直接打印,而是换成了perror函数报告错误
		perror("打开文件test.txt失败啦");
		exit(1);
	}
	//读写文件
	//to do
	
	//关闭文件
	fclose(pfRead);
	pfRead = NULL;
	return 0;
}

复制

请看结果:

在这儿插入图片描述

程序给出的结果,让我们清醒认识到虽然代码错误和黄历是没有关系的,这里和能力有关系。

当听到:”No such file or directory”这句话错误提示的时侯,我们才开始怀疑,难道是真的文件不存在????难道是真的文件不存在????难道是真的文件不存在????

到这儿你可能还是一筹莫展,不知怎么下手? 那我就接下来出炉答案!!!!

这个时侯,我们瞧瞧创建文件的地方:

在这儿插入图片描述

那怎么显示文件的后缀呢? 如果你是win10系统,请看这儿:

在这儿插入图片描述

当我们显示文件扩展名的时侯,刚刚我们创建的test.txt这个文件的名子为何是test.txt.txt了呢?

原来是因为c语言无法打开源文件,当我们创建文本文件的时侯,电脑自定会给文件带一个后缀是.txt,又由于我们的笔记本装好系统后,默认是不显示文件的扩充名的,所以你没看见隐藏的.txt文件,这样就造成了以上的情况。

你以为你创建了一个test.txt的文件,实质上你创建了一个test.txt.txt的文件!

那我们看见这儿,把文件名的后缀放展示下来,然后再把文件的名子改正确,那我们的程序就可以正常打开文件,并且读写咯。

知识点

全文完

创作不易 如果你认为文章帮助到了你 欢迎点赞,收藏,评论,文明三连,鼓励作者 我创建了一个粉丝群:1092687209,有哪些问题,欢迎交流哦

c语言无法打开源文件