| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:关于文件的!怎么大写换小写换不了?直接运行不出来。
只看楼主 加入收藏
neo4236
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2015-6-11
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:10 
关于文件的!怎么大写换小写换不了?直接运行不出来。
#include <stdio.h>
#include <stdlib.h>
int main()
 {
 FILE *fp;
 char file[10],ch;
 printf("请输入输出文件名 : ");
 scanf("%s",file);
 if((fp=fopen(file,"w"))==NULL)
 {
  printf("打开文件失败!\n");
  exit(0);
 }
 ch=getchar();
 printf("输入一串字符:\n");
  ch=getchar();
 while((scanf("%s",ch))!='\n')
 {
     fputc(ch,fp);
   if((ch >= 'A') && (ch <= 'Z'))
   ch = ch+32;
 putchar(ch);
 }
 fclose(fp);
 return 0;
}
搜索更多相关主题的帖子: include file 
2015-06-30 00:32
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:5 
scanf怎么用?你的&呢

一片落叶掉进了回忆的流年。
2015-06-30 01:19
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
字符串能用char存储吗

一片落叶掉进了回忆的流年。
2015-06-30 01:20
小石汇编
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2012-11-5
收藏
得分:5 
你的错误 ch只是个字符类型的变量,给她赋值应该是scanf("%c",&ch);
同时它的返回值 是你输入的字符个数,比如你这个,返回1,
2015-06-30 01:21
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:5 
回复 3楼 诸葛欧阳
可以吧!楼主声明了空间大小了呀
2015-06-30 08:48
neo4236
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2015-6-11
收藏
得分:0 
回复 2楼 诸葛欧阳
#include <stdio.h>
#include <stdlib.h>
int main()
 {
 FILE *fp;
 char file[10],ch;
 printf("请输入输出文件名 : ");
 scanf("%s",file);
 if((fp=fopen(file,"w"))==NULL)
 {
  printf("打开文件失败!\n");
  exit(0);
 }
 ch=getchar();
 printf("输入一串字符:\n");
  ch=getchar();
 while((scanf("%c",&ch))!='\n')
 {
   fputc(ch,fp);
   if((ch >= 'A') && (ch <= 'Z'))
   ch = ch+32;
   printf("%c",ch);
 }
 fclose(fp);
 return 0;
}  
改完后,请问怎么存储的文本文件里是空的?而且第一个字符没有输出在屏幕上。这是怎么回事?谢了!
2015-06-30 09:06
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:5 
4楼的解释正确。按4楼的分析去修改一下。
2015-06-30 09:16
neo4236
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2015-6-11
收藏
得分:0 
回复 6楼 neo4236
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char file[10],ch;
printf("请输入输出文件名 : ");
scanf("%s",file);
if((fp=fopen(file,"w"))==NULL)
{
  printf("打开文件失败!\n");
  exit(0);
}
ch=getchar();
printf("输入一串字符:\n");
  ch=getchar();
while((scanf("%c",&ch))!='\n')
{
   fputc(ch,fp);
   if((ch >= 'A') && (ch <= 'Z'))
   ch = ch+32;
   printf("%c",ch);
}
fclose(fp);
return 0;
}  
改完后,请问怎么存储的文本文件里是空的?而且第一个字符没有输出在屏幕上。这是怎么回事?谢了!
2015-06-30 09:18
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
下面的程序测试通过。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char file[10],ch;
printf("请输入输出文件名 : ");
scanf("%s",file);
if((fp=fopen(file,"w"))==NULL)
{
  printf("打开文件失败!\n");
  exit(0);
}
ch=getchar();
printf("输入一串字符: ");
scanf("%c",&ch);
while(ch!='#')
{
     fputc(ch,fp);
   if((ch >= 'A') && (ch <= 'Z'))
   ch = ch+32;
putchar(ch);
scanf("%c",&ch);
}
fclose(fp);
return 0;
}
2015-06-30 16:32
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
之所以楼主的程序中文件内容为空,是因为:
在对文件进行操作时,系统会为每个文件开辟一块缓冲区,只有缓冲区满或是程序结束、文件被关闭时才会将缓冲区中的数据写入文件。
而楼主的程序中,因为while循环的判断条件不合理,导致循环没法结束,程序也就不能结束,文件也就没被关闭,自然缓冲区中的数据就没有被写入文件,所以文件内容为空。
解决办法:
将程序如我在第9楼那样改,或者在"putchar(ch);"后加上"fflush(fp);",就可以保证随时将缓冲区中的数据写入文件。
2015-06-30 17:07
快速回复:关于文件的!怎么大写换小写换不了?直接运行不出来。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053868 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved