这是我的代码!(很抱歉我的英语很差)
#include<stdio.h>
int convert(char ch);
int main(void)
{
char ch=0;
while(ch != 'q')
{
ch=getchar();
ch=convert(ch);
if(ch == -1)
printf("wrong input");
else
putchar(ch);
putchar('\n');
}
return 0;
}
int convert(char ch)
{
if(ch>='A' && ch<='Z')
ch+=32;
else if(ch>='a' && ch<='z')
ch-=32;
else
return -1;
}此代码用于将A转换为a,将z转换为Z,将小写转换为大写字母,或反转。
但完成后,我发现了一些奇怪的东西,因为每当我在程序中添加一个字符时,
它总是返回我期望的结果和另一个“错误的输入”。除了一个字符和一个Enter之外,我没有在我的标准输入中放入任何东西。
所以,这是我的问题。
函数getchar()或其他一些像fgetc,fgets接收一个'enter‘作为字符?
发布于 2009-11-19 08:42:46
函数getchar()或其他一些像fgetc,fgets接收一个'enter‘作为字符?
是的,'Enter‘是第10个字符。您可以通过多加一行来查看:
ch=getchar();
printf("Received: %d\n", ch);
ch=convert(ch);abc收件量: 97
接收数: 98
收件量: 99
收件量: 10
发布于 2009-11-19 08:41:01
这里有一些example code可以帮助您更好地理解getchar。
另外,我认为你需要把你的else子句放在括号里。
更改此设置:
else
putchar(ch);
putchar('\n');要这样做:
else
{
putchar(ch);
putchar('\n');
}在C/C++中,只有第一行代码将在if/else块中执行,除非您用{和}括号将其括起来,以指示应将多行代码视为单个块。
发布于 2009-11-19 08:40:18
是的,它会的。换行符是行的一部分,因此它将被算作输入的一部分。
您可能希望使用换行符作为退出程序的字符,除非您需要处理多行。
编辑:您可能还希望使用do{}while loop而不是传统的while循环
https://stackoverflow.com/questions/1760158
复制相似问题