fgets与gets的问题

着相 2011-07-26 04:53:06
例题如下:当使用gets(file);时,运行正常,而fgets就提示不能打开文件而退出,请求解答
#include <stdio.h>
#include <stdlib.h>
#define BUF 20

int main(void)
{
char file[BUF];
int ch;
FILE *fp;
long count=0;

printf("Enter the filename: ");
fgets(file,BUF,stdin); /*当使用gets(file);时,运行正常,而fgets就提示不能打开文件而退出*/

if((fp=fopen(file,"r"))==NULL)
{
printf("Can't open %s\n",file);
system("pause");
exit(1);
}
while((ch=getc(fp))!=EOF)
{
putc(ch,stdout);
count++;
}
fclose(fp);
printf("file %s has %ld characters\n",file, count);
system("pause");
return 0;
}
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-07-26
  • 打赏
  • 举报
回复
fgets(file,BUF,stdin); /*当使用gets(file);时,运行正常,而fgets就提示不能打开文件而退出*/
if ('\n'==file[strlen(file)-1]) file[strlen(file)-1]=0;//去掉file末尾的'\n',如果有
if((fp=fopen(file,"r"))==NULL)
ryfdizuo 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 l2051354 的回复:]

我使用的是dev c++,不至于集成环境的不同会造成对fgets不同的解释吧
[/Quote]
你用其他编译器测试一下。
xiaoguangzaia 2011-07-26
  • 打赏
  • 举报
回复
你是不是那个buf太大了,fgets的时候把确定键也读到file里面了
file[strlen(file)-1] = '\0'试试
着相 2011-07-26
  • 打赏
  • 举报
回复
我使用的是dev c++,不至于集成环境的不同会造成对fgets不同的解释吧
luciferisnotsatan 2011-07-26
  • 打赏
  • 举报
回复
vs2005,fgets没问题。

70,035

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧