首页 > 解决方案 > 如果 char 只能与 if 语句一起使用,它如何与 %c 或 %s 一起使用?

问题描述

我遇到的问题是以下代码。

基本上,我很困惑,因为我知道char应该与%c.

然而,我也知道%c只有一个字符,这意味着为了在 if 语句(“男人”或“女人”)中得到这个词,它必须变成一个%s.

但是,%schar.

我想问:如果我让 char 保持原样,我的想法和代码会出现什么问题导致结果无法正常输出?

int main() {
    char gender;

    printf("Enter gender(M/F) : ");
    scanf("%c", &gender);
    if (scanf("%c", &gender) == 'M') {
        printf("Man");
    }
    else if (scanf("%c", &gender) == 'F') {
        printf("Woman");
    }

    printf("The gender is %c.", gender);

    return 0;
}

标签: cchar

解决方案


你为什么不改用 getchar() 呢?

int main()
        {

            printf("Enter gender(M/F) : ");
            char gender = getchar();

            if (gender == 'M')
                printf("Man\n")

            if (gender == 'W')
                printf("Woman\n")

            printf("The gender is %c.\n", gender);

            return 0;
        }

Also its a good practice to enclosure your reading into a while loop and break from it only if the char that you got from the user is acceptable (Check for EOF or any other char , show an error message and try again.)

Alternative just use scan only one time:

  int main()
        {

            printf("Enter gender(M/F) : ");
            char gender;
            scanf(" %c", &gender);

            if (gender == 'M')
                printf("Man\n")

            if (gender == 'W')
                printf("Woman\n")

            printf("The gender is %c.\n", gender);

            return 0;
        }

推荐阅读