c语言有段关于文件的程序总是出错,帮忙解释一下
#include"stdio.h"#include"stdlib.h"//#include"conio.h"main(){FILE*fp;charname[50],mod...
#include "stdio.h"
#include "stdlib.h"
//#include "conio.h"
main(){
FILE *fp;
char name[50],mode[10];
int i=0;
while(1){
printf("请输入文件名: \n");
gets(name);
printf("请输入打开方式: \n");
gets(mode);
if((fp=fopen(name,mode))!=NULL){ //代码编译的时候没问题,就这行出的错,不知道什么原因
printf("打开成功: \n");
}
else
printf("打开失败,请重新输入");
}
} 展开
#include "stdlib.h"
//#include "conio.h"
main(){
FILE *fp;
char name[50],mode[10];
int i=0;
while(1){
printf("请输入文件名: \n");
gets(name);
printf("请输入打开方式: \n");
gets(mode);
if((fp=fopen(name,mode))!=NULL){ //代码编译的时候没问题,就这行出的错,不知道什么原因
printf("打开成功: \n");
}
else
printf("打开失败,请重新输入");
}
} 展开
展开全部
你的程序我测试过了,执行成功了。
fopen()的第一个参数为文件路径和名称,必须指明有效路径,比如C:\\Test.txt ;
第二个参数为打开方式:
"r"—读方式,若果文件不存在或找不到,则打开失败;
"w"—写入一个空文件,若果给定文件存在,则将覆盖原有内容;
"a"—打开文件以便在文件末尾写入或者创建不存在的文件;
"r+"—以读写方式打开文件(文件必须存在);
"w+"—以读写方式打开一个空文件,如果文件存在,将覆盖原内容;
"a+"—以读取和附加内容方式打开文件;如果文件不存在则创建。
因此对于你的程序,输入方式应为:比如
C:\\test.txt
a
这样在C盘就可以看到0字节的test.txt
下面是我的程序运行结果截图:
展开全部
貌似是因为:name字符数组的大小定义成了50,你在gets的时候,输入的文件名肯定<50个字符,但是数组中后面的元素是确实存在的,所以在执行fopen的时候,带入的name是一个长度为50的字符串,但是你建立好的文件名肯定<50,所以两个字符串不匹配。同理 mode 也是同样的原因
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我按大哥的建议,另外我想用gets()代替可是 编译时程序运行时总是如果好用的话,再从c与c 的差别入手找一下.比如,c里面必须先将定义都一
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询