【问题标题】:String detection on C [duplicate]C上的字符串检测[重复]
【发布时间】:2022-01-01 14:29:39
【问题描述】:

卡在这个问题上很久了,不知道为什么故障保护没有检测到字符串。

char EmpCatString[10];
    printf("Choose Employee Category CTO or PM or PA");
    scanf_s("%9s", &EmpCatString, sizeof(EmpCatString)) == 1;
        printf("%s\n", EmpCatString);
        if (EmpCatString == "CTO" || EmpCatString == "PM" || EmpCatString == "PA")
        {
            state = 3;
        }
        else
            printf("please enter a valid Employee Category: \nCTO:\nPM\nPA\n=>");

【问题讨论】:

标签: c string


【解决方案1】:

使用strcmp。如果结果是0,则字符串相同。 == 这里是比较内存地址。

【讨论】:

    【解决方案2】:

    在您的if 声明中

    if (EmpCatString == "CTO" || EmpCatString == "PM" || EmpCatString == "PA")
    

    您实际比较的是EmpCatString 的地址和文字”CTO” 的地址。不是两个字符串的内容。你需要比较EmpCatString指向的值和字面量指针”CTO”的值

    使用strcmp 等函数之一来比较值。

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 1970-01-01
      • 2015-07-16
      • 2013-05-27
      • 1970-01-01
      • 2013-05-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多