c语言 文件函数问题

原问题:c语言 文件函数问题
分类:编程开发 > 最后更新时间:【2017-07-14 00:44:50】
问题补充:

在C语言中对fopen函数的讲解:FILE *fopen(char *filename, char *mode); 按道理来说,filename是指针啊,可是我在后面的很多例子中,都会有如下的情况:char* filename[30]; (当然,这其中的30是可以改变的了) 然后在后面就会有这么一句:scanf(“%s”,filename); /*输入文件名*/ ,那么我想问一下,既然filename是字符型的数组,而且在后面的scanf语句中从终端得到值,那这不是与fopen函数中的形参相矛盾了吗?

最佳答案

在C语言中,字符串数组变量就是指向字符串的指针,这个你若要完全理解,要看下计算机原理

char a[100]; 这个a就是一个指针,也就是一个内存地址

它与char *a;作用完全相同,只是后者没有分配空间而已

而fopen中的char *filename,它这个filename就是文件名,字符数组

但定义的话,是:char filename[30]; //注意,肯定没有*的,看教材

所以可以用scanf(“%s”,filename); 来输入

并可以作为参数用于fopen

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
17

分享到:

其他回答

其它网友回答:
首先,char* filename[30];   这个估计是打错了,这个是指针数组,不是字符数组,应该去掉*

其它网友回答:
char filename[30]; 是一个数组,filename就表示指向数组第一个元素的指针,也就是指向filename[0]的指针。

其它网友回答:
c语言中,字符串只能以字符数组的形式存储,把首个元素的指针传递过去,在fopen函数中就能访问整个数组了

其它网友回答:
1 函数原型:FILE * fopen(const char * path,const char * mode);2 功能:将文件名为path的文件以mode指定模式打开,文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。3 头文件:stdio.h4 参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。wb+ 读写打开或建立一个二进制文件,允许读和写。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

    推荐