首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么下面的代码一直打印value10?

为什么下面的代码一直打印value10?
EN

Stack Overflow用户
提问于 2020-11-20 21:42:44
回答 2查看 75关注 0票数 0

我打算做一个循环,如果我输入字母表,那么ascii值就会出来。除非我输入'0‘。

但结果如下所示。这是我在结果下面做的代码。值10从何而来?

按任意字母A 65按任意字母10按任意字母

代码语言:javascript
复制
char aski;
while(1) 
{
    printf("Press any Alphabet\n");
    scanf("%c", &aski);
    if (aski == '0') 
        break;
    else
        printf("%d\n", aski);
}
EN

回答 2

Stack Overflow用户

发布于 2020-11-20 22:00:17

scanf读取额外的\n\n的ASCII是10。这就是为什么你会得到10。我建议你使用getchar()来读取额外的\n

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    char aski;
    while (1)
    {
        printf("Press any Alphabet\n");
        scanf("%c", &aski);
        getchar();
        if (aski == '0')
            break;
        else
            printf("%d\n", aski);
    }

    return 0;
}

输出为:

代码语言:javascript
复制
Press any Alphabet
a
97
Press any Alphabet
b
98

PS:我停止执行后,输入b。

票数 1
EN

Stack Overflow用户

发布于 2020-11-20 21:54:59

当您按enter键时,您实际上是在创建一个\n (新行)此字符的值为10,这就是正在打印的字符。

代码语言:javascript
复制
char c = '\n';
printf("%d",c);

会给你10分。

尝尝这个

代码语言:javascript
复制
char aski;
scanf("%c ", &aski);

注意%c后面的空格,这确保读取所有输入的空格。

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

https://stackoverflow.com/questions/64930517

复制
相关文章

相似问题

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