C读取文件问题

yxlovemoney 2009-06-27 07:36:13
从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件text.txt中,然后从该文件读出字符串并显示出来。
#include<stdio.h>
int main()
{
FILE *fp,*fp2;
char str[100];
int i=0;
if((fp=fopen("c:\\text.txt","w"))==NULL)
{
printf("can't open this file.\n");
exit(0);
}
printf("input a string:\n");
gets(str);
while(str[i])
{
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp2=fopen("c:\\test.txt","r");
fgets(str,100,fp2);
printf("%s\n",str);
fclose(fp2);
getch();
return 0;
}
为什么会出错呢?请大大指教指教
...全文
64 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Flyinsky1 2009-06-27
  • 打赏
  • 举报
回复
不是吧。s x ,读音有待加强。
yxlovemoney 2009-06-27
  • 打赏
  • 举报
回复
原来是笔误。。。。
Aaron_Jerry 2009-06-27
  • 打赏
  • 举报
回复
问题就出在两个常量字符串表示的文件名上,并不代表同一个文件,改用变量表示文件名吧。
#include <stdio.h>
int main()
{
FILE *fp,*fp2;
char str[100];
int i=0;
char filename[30]; printf("input a filename:\n");
fgets(filename,30,stdin);
if((fp=fopen(filename,"w"))==NULL)
{
printf("can't open this file.\n");
exit(0);
}
fflush(stdin); //要增加这条语句
printf("input a string:\n");
fgets(str,100,stdin); //最好别用gets,因为它对输入长度没有限制。
while(str[i])
{
if(str[i]>='a'&&str[i] <='z')
str[i]=str[i]-32;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp2=fopen(filename,"r");
fgets(str,100,fp2);
printf("%s\n",str);
fclose(fp2);
getch();
return 0;
}
Arnold9009 2009-06-27
  • 打赏
  • 举报
回复
额,刚刚又翻了一下fgets函数说明,好像遇到结束符什么的可以正常返回
不过还是觉得这种写法有点别扭◎#¥%#◎¥
ljhhh0123 2009-06-27
  • 打赏
  • 举报
回复
"c:\\text.txt"
"c:\\test.txt"
你写的文件和你打开的文件是不一样的,你这个笔误害我调试修改了20分钟。
windows报的错误就是因为你打开了一个不存在的文件。
Arnold9009 2009-06-27
  • 打赏
  • 举报
回复
fgets(str,100,fp2);
这里错误,文件中不一定有100个字节的数据,如果小于100个,那么肯定会出错
liao05050075 2009-06-27
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
FILE *fp,*fp2;
char str[100];
int i=0;
if((fp=fopen("c:\\text.txt","w"))==NULL)
{
printf("can't open this file.\n");
exit(0);
}
printf("input a string:\n");
gets(str);
while(str[i])
{
if(str[i]>='a'&&str[i] <='z')
str[i]=str[i]-32;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp2=fopen("c:\\test.txt","r"); --> fp2=fopen("c:\\text.txt","r");
fgets(str,100,fp2);
printf("%s\n",str);
fclose(fp2);
getch();
return 0;
}

69,369

社区成员

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

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