冷回清风暖 发表于 2020-7-26 18:40:03

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

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

int main(void)
{
    char ch;

    while((ch = getchar())!= '!')
    {
      if(ch > 'A' && ch < 'Z')
            ch += 32;
      if(ch > 'a' && ch < 'z')
            ch -= 32;
      putchar(ch);
    }

    return 0;
}
}

在这一部分
   
while((ch = getchar())!= '!')
    {
      if(ch > 'A' && ch < 'Z')
            ch += 32;
      if(ch > 'a' && ch < 'z')
            ch -= 32;
      putchar(ch);
    }

加了else之后结果正确

不加else结果错误

调试也没发现问题{:5_100:}


sunrise085 发表于 2020-7-26 18:44:53

本帖最后由 sunrise085 于 2020-7-26 18:47 编辑

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

另外,if的条件应该是大于等于和小于等于,你没写等于,会漏掉AZ和az

冷回清风暖 发表于 2020-7-26 19:08:33

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

赞突然就醒悟了 谢谢
页: [1]
查看完整版本: c语言标准输入流输入数据经处理保存至文件出错。