鱼C论坛

 找回密码
 立即注册
查看: 1025|回复: 2

[已解决]c语言标准输入流输入数据经处理保存至文件出错。

[复制链接]
发表于 2020-7-26 18:40:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
先附上完整代码,目的是将输入的字符进行大小写转换后,保存至文件。
  1. #include<stdio.h>
  2. #include<stdio.h>

  3. int main(void)
  4. {
  5.     char ch;

  6.     while((ch = getchar())!= '!')
  7.     {
  8.         if(ch > 'A' && ch < 'Z')
  9.             ch += 32;
  10.         if(ch > 'a' && ch < 'z')
  11.             ch -= 32;
  12.         putchar(ch);
  13.     }

  14.     return 0;
  15. }
  16. }
复制代码


在这一部分
  1.      
  2. while((ch = getchar())!= '!')
  3.     {
  4.         if(ch > 'A' && ch < 'Z')
  5.             ch += 32;
  6.         if(ch > 'a' && ch < 'z')
  7.             ch -= 32;
  8.         putchar(ch);
  9.     }
复制代码

加了else之后结果正确
02.png
不加else结果错误
01.png
调试也没发现问题


最佳答案
2020-7-26 18:44:53
本帖最后由 sunrise085 于 2020-7-26 18:47 编辑

这个肯定需要加else的呀。
你若不加else的话,原来的大写会先经过第一个if被转为小写,然后在经过第二个if再被转为大写。
而若加了else,则不会同时进入这两个if

另外,if的条件应该是大于等于和小于等于,你没写等于,会漏掉AZ和az
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-26 18:44:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-7-26 18:47 编辑

这个肯定需要加else的呀。
你若不加else的话,原来的大写会先经过第一个if被转为小写,然后在经过第二个if再被转为大写。
而若加了else,则不会同时进入这两个if

另外,if的条件应该是大于等于和小于等于,你没写等于,会漏掉AZ和az
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-26 19:08:33 | 显示全部楼层
sunrise085 发表于 2020-7-26 18:44
这个肯定需要加else的呀。
你若不加else的话,原来的大写会先经过第一个if被转为小写,然后在经过第二个if ...

赞  突然就醒悟了 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 07:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表