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三个字符来。 展开
还有个疑问是,文件内容为 后面无法输出 我存入数据的文件的 内容。
比如我的文件名为:abc.txt 里面存入了 def,那么最后我想显示出这个文件中的def三个字符来。 展开
3个回答
展开全部
用fgets会在读取最后加一个'\n',你看内存能看见 把它换成‘\0’就好了
追问
试过了,不行的
追答
贴代码 不行才怪! 你是不是name[number] = 0;?????????这样的话 肯定不行
char name[number] = {0};
.....//input
int iEndPos = strlen(name); name[iEndPos] = 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先用gets从键盘读取文件名(fgets是从文件读取)
再用fopen打开文件
可以用fgetc读取字符
再用fopen打开文件
可以用fgetc读取字符
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询