易百教程

控制台字符输入

可以使用格式说明符%c读取单个字符并将其存储为char类型。对于字符串,可以使用说明符%s或说明符%[]。该字符串存储为以空字符结尾的字符串,其中\0作为最后一个字符。使用%[]格式规范时,要读取的字符串必须仅包含方括号之间出现的字符。

^用于排除字符。
%[aeiou]将读取仅由元音组成的字符串。不是元音的第一个字符将表示字符串的结尾。
%[^ aeiou]读取包含任何不是元音的字符的字符串。第一个元音或空格字符将表示字符串的结尾。

示例代码

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#define MAX_TOWN 10

int main(void)
{
    char initial = ' ';
    char name[80] = { ' ' };
    char age[4] = { '0' };
    printf("请输入第一个初始值: ");
    scanf_s("%c", &initial, sizeof(initial));
    printf("请输入你的姓氏: ");
    scanf_s("%s", name, sizeof(name));
    fflush(stdin);

    if (initial != name[0])
        printf("%s,你输入的初始值错误.\n", name);
    else
        printf("Hi, %s. 你输入的初始值正确. 完成!\n", name);
    printf("输入你的全名,并用逗号分隔你的年龄:\n");
    scanf_s("%[^,] , %[0123456789]", name, sizeof(name), age, sizeof(age));
    printf("\n你的名字是 %s ,你今年 %s 岁了.\n", name, age);
    system("pause");
    return 0;
}

执行上面示例代码,得到以下结果:

请输入第一个初始值: 1
请输入你的姓氏: abc
abc,你输入的初始值错误.
输入你的全名,并用逗号分隔你的年龄:
hema su
,
23

你的名字是
hema su
 ,你今年 23 岁了.

该程序希望输入第一个姓氏,然后输入名字。它会检查姓名的第一个字母是否与输入的姓名相同。