精华内容
下载资源
问答
  • 2020-07-12 12:15:28

    我在做c primer plus有关于文件练习题的时候,用visual studio时,发现通过程序内获取文件名无法正常打开文件,但是通过命令行参数获取文件名却能正常打开文件,再思考和搜索一番后,找到了问题。因为没搜到类似博客,自己写下一篇,希望能帮助到大家。
    1:工程文件和可执行文件不在同一个目录下。用visual studio启动程序,里面输入的文件名(我自己创建的文本文档,是在debug里面创建的)无法在同目录直接找到,所以打开失败。而用命令行参数保证了它们在同一目录下面。
    解决办法就是直接去可执行文件所在目录创建文件,这时再打开可执行文件就可以了。
    2:fgets会收纳最后一个换行符。我用的是比较新的版本的visual studio,所以不能用gets或者gets_s,所以用了fgets,fgets会接收到后一个换行符为止,所以无法找到同名文件。
    解决办法是用一个循环找到fgets输入的字符串中的换行符,并把换行符改成\0,即可。

    更多相关内容
  • //printf("文件打开失败!\n"); exit(1); } fgets(text, MAX, fp); printf("\n\t\t\t%s\n\n", text); for(i=0; i 在判断fp == null的时候直接返回 用 perror()返回No such file or directory 求大佬讲解...
  • c语言fopen打开文件失败的原因是什么?原因是:程序是以“r”的方式,也就是“读”的方式打开file.txt文件,可是程序都没有指定这个文件...2、程序的源码如下:如果打开文件失败的话,程序会提示“文件打开失败”。...

    c27a79e338629a7e99e0d29b5fb84d12.png

    c语言fopen打开文件失败的原因是什么?

    原因是:程序是以“r”的方式,也就是“读”的方式打开file.txt文件,可是程序都没有指定这个文件在哪里,程序找不到这个文件,所以就认为打不开。

    1、打开集成开发环境Dev-C++,并且新建一个源代码文件:main.c,如下图所示:

    b24ae3041b29d2e15d90794b9eae503a.png

    在我的电脑上,此源代码放在“D:CCode经验”路径下。

    2、程序的源码如下:如果打开文件失败的话,程序会提示“文件打开失败”。

    8d9243dea6dc0d8c7f7b4a55baea95c3.png

    3、 我来编译一下,编译通过,如下图所示:

    e83ae397d996c27c5a3e46fc5cb0358c.png

    4、下面再来运行一下,运行结果如下:

    0d4851e02f67fe35b47a54ee39da4c1b.png

    从运行结果看,提示了“文件打开失败!”,这是为什么,程序代码没什么问题啊!

    5、 其实原因在于,程序是以“r”的方式,也就是“读”的方式打开file.txt文件,可是程序都没有指定这个文件在哪里,程序找不到这个文件,所以就认为打不开。

    6、 解决的方法很简单,只要创建file.txt文件,且指定文件的路径就可以了。在“D:CCode经验”路径下新建一个文件file.txt。

    7、 再来编译运行 一下,结果如下,输出正常。

    695ee5427f3dee01b690f388dd37b816.png

    推荐教程:《C语言》

    展开全文
  • 4. 如果二进制文件打开功能需要| O_BINARY,则fopen需要添加b. 否则,将无法读取该文件.5. 如果将文件USB插入串行端口,请特别注意USB串行端口的不稳定性. 容易读写异常. 建议使用扩展卡到串行端口进行长期操作.////...

    be41b5504559253d45e80545eb74cd11.png

    文件读写失败中的几个常见错误.

    1. 文件是否存在

    2,文件权限. 该程序会打开非常关闭的文件,并且可能会更改文件权限.

    3. 缓冲区大小足以读取文件吗?

    4. 如果二进制文件打开功能需要| O_BINARY,则fopen需要添加b. 否则,将无法读取该文件.

    5. 如果将文件USB插入串行端口,请特别注意USB串行端口的不稳定性. 容易读写异常. 建议使用扩展卡到串行端口进行长期操作.

    //文件操作界面// /// //

    int open(const char * path,int access,int模式)

    path要打开的文件的路径和名称

    访问访问模式fopen失败但生成了文件,宏的定义和含义如下:

    7df434c371cb7e4f8aa9c6eb2bee1976.png

    O_RDONLY 1个只读打开

    O_WRONLY 2只写即可打开

    O_RDWR 4读写打开

    还可以选择以下模式来匹配以上三种基本模式:

    O_CREAT 0x0100创建一个文件并打开它

    O_TRUNC 0x0200打开一个现有文件并将文件长度设置为0,保留其他属性

    未使用O_EXCL 0x0400

    O_APPEND 0x0800其他打开的文件

    O_TEXT 0x4000打开文本文件以翻译CR-LF控制字符

    O_BINARY0x8000无需CR-LF转换即可打开二进制字符

    d19f68f43f85491622c313b678b75dd7.gif

    mode此参数仅在access = O_CREAT模式下使用,其值如下:

    S_IFMT 0xF000文件类型掩码

    S_IFDIR 0x4000目录

    S_IFIFO 0x1000 FIFO专用

    仅S_IFCHR 0x2000字符

    仅S_IFBLK 0x3000块

    S_IFREG 0x8000仅为0x0000

    S_IREAD 0x0100可读

    S_IWRITE 0x0080可写

    S_IEXEC 0x0040可执行文件

    c991902aad7da5356682f4cd6176e65d.png

    FILE * fopen(char *文件名,char * mode)

    文件名文件名

    模式打开模式:

    r以只读模式打开文本文件

    rb以只读模式打开二进制文件

    w以只读模式打开文本文件

    wb以只写模式打开一个二进制文件

    一个附件来打开文本文件

    ab append打开一个二进制文件

    r +以可读可写的方式打开文本文件

    i_3_1589992672x376325621_26.jpg

    rb +以一种可读可写的方式打开一个二进制文件

    w +以可读可写的方式创建文本文件

    wb +以可读可写的方式生成二进制文件

    a +以可读可写的附加模式打开文本文件

    ab +以可读可写的方式附加二进制文件

    open和fopen之间的区别:

    前者是底层IO,后者是高层IO.

    前者返回文件描述符,后者返回文件指针.

    前者是无缓冲的,后者是缓冲的.

    前者与读,写等结合使用. 后者与freadfopen失败但生成了文件,fwrite等结合使用.

    后者是在前者的基础上扩展的,在大多数情况下,使用后者.

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-256383-1.html

    展开全文
  • C语言fopen打开文件失败了,原来是这个原因~~~~

    万次阅读 多人点赞 2020-06-19 11:07:54
    经常有人问我,我的C语言代码好好的,怎么就打开文件失败了呢? 我们先来看看代码吧 #include <stdio.h> #include <stdlib.h> int main() { FILE* pfRead = fopen("test.txt", "r"); if (pfRead == ...

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

    问题

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

    #include <stdio.h>
    #include <stdlib.h>
    
    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语言还有一个报告错误信息的函数perror哦~

    void perror ( const char * str );
    

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

    这里既然我们发现fopen函数打开文件失败了,就可以在fopen函数后报告一下错误的原因是什么,接下来改代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    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了呢?

    原来是因为,当我们创建文本文件的时候,电脑自定会给文件带一个后缀是.txt,又因为我们的电脑装好系统后,默认是不显示文件的扩展名的,所以你没看到隐藏的.txt文件,这样就导致了以上的情况。

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

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

    知识点

    • fopen以读的形式打开文件,文件必须存在,代码中打开的文件名和实际文件名必须要匹配
    • perror函数是一个错误报告函数,可以适当的使用
    • 我们在使用电脑的时候,最好把文件的扩展名暴露出来,这样就不容易出问题
    • 代码出问题是不小心写了错误的代码,不是黄历的问题,要学会解决问题和调试代码的能力,才能成长为优秀的程序员。

    全文完

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

    展开全文
  • C语言文件的操作.ppt

    2021-05-22 03:36:49
    C语言文件的操作任务1 文件类型指针变量的定义 8.1 文件 文件的分类 在C语言中,文件被看成是由一个一个的字符或字节组成的。根据数据的组织形式,文件可分为文本文件和二进制文件两种。 说明: 8.1.2 文件指针 对...
  • 一个单链表创建学生信息的作业,要求要用文件的输入输出。 打全部路径会出现如图的错误。 打“C:\\\student_info.txt”也不行。 把文件移到project8的文件夹下面打“student_info.txt”也不行。 已确定...
  • 1.2 文件的输入输出函数 键盘、显示器、打印机、磁盘驱动器等逻辑设备, 其输入输出都可以通过文件管理的方法来完成。而在编程时使用最多的要算 是磁盘文件, 因此.{ printf("File open error\n"); exit(0); } } ...
  • C语言提供了标准库函数用于文件打开和关闭。1、文件打开打开文件的操作通过标准库函数 fopen 完成,该函数定义如下:FILE *fopen( const char * filename, const char * mode );函数 fopen 的第二个参数指定了...
  • C语言打开文件教程在在 C 语言中,打开文件使用 fopenC语言fopen函数详解语法FILE *fopen(char *filename, char *mode);参数参数描述filename要打开文件路径。mode要打开文件的方式。返回值如果打开成功,则返回...
  • c语言文件获取失败问题

    千次阅读 2020-04-17 18:23:59
    我的文件获取失败是因为一开始用的只写w操作,只写W是刷新写,创建写,在打开文件时即将之前文件中的内容取消,故而下边的数组没有获取到内容,出现错误。原码如下。 #include <stdio.h> void fun(char str...
  • C语言中,打开文件就是将其从外部存储器调入内存,并定义一个文件指针指向该... //定义文件指针文件指针 = fopen("文件名","文件打开方式"); //打开文件例如,下面代码表示以“只读”方式打开文本文件 f01.txt:FIL...
  • c语言文件打开权限

    千次阅读 2019-08-27 13:25:42
    函数说明 参数path字符串包含欲打开文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态字符串: r 打开只读文件,该文件必须存在。 r+ 打开可读写的文件,该文件必须存在。 w 打开只写文件,若...
  • C语言打开并写入文件

    千次阅读 2021-05-20 07:49:01
    } 该程序使用在mainoutput.txt参数中给定名称的文件打开文件,默认情况下为未提供参数的情况。如果已经存在同名文件,则将其内容丢弃,并将该文件视为新的空文件。如果文件尚不存在,则fopen()调用将创建该文件。 ...
  • C语言文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 只可以读 只可以写 读写兼备 文本模式 r w ...
  • linnux;c语言文件的基础操作;文件打开、关闭、文件读写。字符读写、字符串读写、格式化读写、二进制读写。结构体写进文件;
  • 现在,越来越多朋友都开始使用win10系统了,不过偶尔他们也会遇到一些问题。比如,现在一位朋友反馈自己在win10系统中运行程序时遇到了c:\xx\xxx.dll没有被...其实,该问题一般是由于dll未注册或软件存在缺少文件导...
  • C语言打开文件详解

    万次阅读 多人点赞 2020-02-28 14:10:09
    C语言中操作文件之前必须先打开文件;所谓“打开文件”,就是让程序和文件建立连接的过程。 打开文件之后,程序可以得到文件的相关信息,例如大小、类型、权限、创建者、更新时间等。在后续读写文件的过程中,程序还...
  • printf("%6d", aa[i][j]);printf ("\n");}y = fun (aa);...}void NONO (){/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */int i, j, y, k, aa[M][N] ;FILE *rf, *wf ...
  • 文件代表一系列的字节。函数 fopen()将一个文件和一个流关联起来,并初始化一个类型为 ...每个用于打开文件的函数(也就是 fopen()、freopen()和 tmpfile())都会返回一个指向 FILE 对象的指针,该 FILE 对象包含与被...
  • 打开文本文件使用fopen可以打开一个文件。fopen以某种指定模式(最常用的三种模式为r、w和a,分别代表读、写和附加)打开文件后,会返回一个文件指针,以后您就用这个文件指针访问这个文件。例如,您要打开一个文件并...
  • C语言文件操作

    2022-03-02 16:35:32
    包含了C文件打开关闭方式,文件顺序读写和随机读写操作函数使用,
  • Linux中C语言open函数打开或创建文件详细讲解Linux中C语言open函数打开或创建文件详细讲解头文件:#include#include#include函数原型:int open( const char * pathname, int flags);int open( const char * pathname...
  • c语言 文件

    千次阅读 2021-05-24 04:05:29
    fopen函数会返回NULL(如果要打开文件不存在),或者该文件 int fclose(FILE *stream); fscanf(FILE*,...); fprintf(FILE*,...); fopen第二个参数 原文:https://www.cnblogs.com/foodie-nils/p/13629136.html
  • 要操作文件,第一步就是要打开文件C语言提供了fopen函数来完成这个操作。 1.打开文件fopen函数 来看一些fopen函数的原型: FILE *fopen (const char *filename,const char *modes) 第一个参数插入文件名或者文件...
  • c语言文件打开模式

    2019-09-03 23:21:11
    C语言中,文件操作是基本操作,在一般中,但对于文件打开操作不熟悉,会浪费掉许多时间去发现问题
  • C语言文件操作详解

    千次阅读 2022-02-24 21:01:52
    如果你是一个C语言初学者,那么你一定发现,目前我们的C语言程序只会在执行后自动退出,而不会保存数据及运行结果,那么如何才能保存数据呢?为了保存数据,我们可以用到文件操作。
  • C语言文件处理

    2021-10-06 15:35:26
    fopen:文件打开函数,调用方式: FILE *fp; FILE是一个结构体,fp是指向FILE的指针(结构体指针) fp=fopen(路径加文件名,使用文件的方式);l两个参数都是字符串 “” fp=fopen("a.txt","r");//打开“a.txt”文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,756
精华内容 21,102
关键字:

c语言文件打开失败