读书人

关于C语言“打开”文件的有关问题

发布时间: 2012-06-23 14:52:43 作者: rapoo

关于C语言“打开”文件的问题
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{char filename[10],ch;
printf("请输入文件名");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{printf("error");
exit(0);}
上面是一本教材里面的实例,书里提到打开一个文件的形式为:fopen("文件名","使用文件方式")。而上面代码里的那个文件名filename左右没有引号,为什么可以这样书写,是不是我哪里理解出差错了。麻烦各位前辈指导一下,本人困扰很多天了。

[解决办法]
fopen("文件名","使用文件方式")
--------------------------------------------
建议LZ不要被你所看的书迷惑,书上讲的,未必正确或者精确。作为一个程序员或者预备程序员,要学会从自己使用系统以及开发平台来掌握。
真正的fopen定义:
fopen(const char *path, const char *type)
所以真正的含义是,第一个参数是文件名称的全路径名称,第二个参数是打开文件的读写类型
好了,第一个参数为文件名称的全路径名称,则在C语言中有如下方式传入参数:
(1) 一个常量字符串,比如windows: fopen("c:\temp\test.txt","r");
unix/linux:fopen("/tmp/test.txt", "r" );
(2) 通过一个变量指针的方式:就是LZ程序里的那种方式。
因为常量字符串在C语言中,被解释为const char *,因此,不管用什么方式,归根到底还是fopen的语法定义:fopen(const char *path, const char *type)

[解决办法]
FILE *fopen(const char *filename, const char *mode)

fopen opens the named file, and returns a stream, or NULL if the attempt fails.

注意第一个参数类型
[解决办法]

探讨

filename是变量啊 是你要输入的内容
可以看作一个字符串吧,当然是字符数组
而用引号的 “a.txt” 也是一个字符串

[解决办法]
filename是一个字符串数组,在这里调用时,只需要输入数组名即代表字符串。
如:
char filename[10] = "a.txt";
if((fp=fopen("a.txt","w"))==NULL);

若直接写函数名,则需要加引号,
if((fp=fopen("a.txt","w"))==NULL);和上面那个同等效果。,

[解决办法]
+1
探讨
fopen的第一个参数是char类型的指针,filename为字符数组的首地址,也是指向char数组的指针,代表一个字符串

读书人网 >C语言

热点推荐