首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“‘Enter”作为输入?

“‘Enter”作为输入?
EN

Stack Overflow用户
提问于 2009-11-19 08:37:04
回答 5查看 1.3K关注 0票数 0

这是我的代码!(很抱歉我的英语很差)

代码语言:javascript
复制
#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‘作为字符?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-19 08:42:46

函数getchar()或其他一些像fgetc,fgets接收一个'enter‘作为字符?

是的,'Enter‘是第10个字符。您可以通过多加一行来查看:

代码语言:javascript
复制
ch=getchar();
printf("Received: %d\n", ch);
ch=convert(ch);

abc收件量: 97

接收数: 98

收件量: 99

收件量: 10

票数 1
EN

Stack Overflow用户

发布于 2009-11-19 08:41:01

这里有一些example code可以帮助您更好地理解getchar

另外,我认为你需要把你的else子句放在括号里。

更改此设置:

代码语言:javascript
复制
else 
    putchar(ch);
    putchar('\n');

要这样做:

代码语言:javascript
复制
else
{
    putchar(ch);
    putchar('\n');
}

在C/C++中,只有第一行代码将在if/else块中执行,除非您用{}括号将其括起来,以指示应将多行代码视为单个块。

票数 1
EN

Stack Overflow用户

发布于 2009-11-19 08:40:18

是的,它会的。换行符是行的一部分,因此它将被算作输入的一部分。

您可能希望使用换行符作为退出程序的字符,除非您需要处理多行。

编辑:您可能还希望使用do{}while loop而不是传统的while循环

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1760158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档