C语言:用gets能打开文件,用fgets就打不开?什么原因?

#include<stdio.h>#include<stdlib.h>#definenumber40intmain(void){FILE*fp;//文件指针用于打开文件c... #include<stdio.h>#include<stdlib.h>#define number 40int main(void){ FILE * fp; //文件指针用于打开文件 char name[number];//文件名 char contents[100]; //文件内容 printf("输入你想打开的文件名字,如果没有此文件,系统会自动创建\n "); fgets(name,number,stdin); printf("\n"); if((fp=fopen(name,"w"))==NULL) { fprintf(stderr,"Can't open %s file\n",name); exit(1); } puts("输入你想记录的字符,直接按回车退出:"); while((gets(contents))!=NULL&&contents[0]!='\0') fprintf(fp,"%s ",contents); fprintf(stderr,"文件内容为 %s\n",contents); if(fclose(fp)!=0) fprintf(stderr,"Error in closing file\n"); return 0;}
还有个疑问是,文件内容为 后面无法输出 我存入数据的文件的 内容。
比如我的文件名为:abc.txt 里面存入了 def,那么最后我想显示出这个文件中的def三个字符来。
展开
 我来答
diting20
2014-01-20 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:109万
展开全部
用fgets会在读取最后加一个'\n',你看内存能看见 把它换成‘\0’就好了
追问
试过了,不行的
追答
贴代码  不行才怪!  你是不是name[number] = 0;?????????这样的话 肯定不行

char name[number] = {0};
.....//input
int iEndPos = strlen(name); name[iEndPos] = 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
米白微白
2014-01-20 · TA获得超过179个赞
知道小有建树答主
回答量:121
采纳率:75%
帮助的人:56.1万
展开全部
fgets从文件中读取数据,gets从标准输入中读取数据
追问
我的fgets(name,number,stdin);也是从标准输入中获取的数据。
追答
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//添加
#define number 40
int main(void)
{    
FILE * fp;  //文件指针用于打开文件    
char name[number];//文件名    
char contents[100];  //文件内容
int end;     //添加       
printf("输入你想打开的文件名字,如果没有此文件,系统会自动创建\n ");        
fgets(name,number,stdin); 
end = strlen(name);//添加
name[end - 1] = '\0';    //添加   
printf("\n");    
if((fp=fopen(name,"w"))==NULL)    
{        
fprintf(stderr,"Can't open %s file\n",name);        
exit(1);    
}        
puts("输入你想记录的字符,直接按回车退出:");    
while((gets(contents))!=NULL&&contents[0]!='\0')        
fprintf(fp,"%s ",contents);    
fprintf(stderr,"文件内容为 %s\n",contents);        
if(fclose(fp)!=0)        
fprintf(stderr,"Error in closing file\n");    
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rankabc
2014-01-20 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1075万
展开全部
先用gets从键盘读取文件名(fgets是从文件读取)
再用fopen打开文件
可以用fgetc读取字符
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式