首页 > 解决方案 > c中的字符输入

问题描述

我正在尝试读取输入字符,直到它是'a'。但是我需要输入所有字符直到a。问题是它也将换行作为一个字符。即当我按下一个字符(比如 f)回车时它在下一个循环中使用 f 以及换行符。

#include<stdio.h>
int main()
{
    char val;
    while(1)
    {
        printf("\nenter val: (a to stop)");
        scanf("%c",&val);
        printf("val is %d\n",(int)val);
        if(val=='a')
            break;
        else
            continue;
    }
    return 0;
}

输出:

enter val: (a to stop)f
val is 102

enter val: (a to stop)val is 10

enter val: (a to stop)

标签: ccharscanf

解决方案


这是实现您想要的相同逻辑的另一种方式。您可以在使用时在格式说明符之前添加一个空格scanf()

scanf(" %c",&val); 

前导空格告诉scanf()在读取下一个字符之前跳过任何空白字符(包括换行符)。

正如他们中的许多人建议的那样,您可以使用fgetsor fgetc


推荐阅读