我收到错误“未指定与字符串文字的比较结果(改为使用strncmp)”

时间:2019-11-29 00:57:04

标签: c

我是C语言的新手,所以在代码行中看到此错误时,我发现它很奇怪。你能帮我吗?

显示错误的行是

if (Name == "abc") {
//full code

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char Name[8];
    puts("Enter your name here");
    scanf("%s", Name);
    if (Name == "abc") {
        puts("No, your name is abcd");
    }
    else {
        printf("Yes, your name is %s", Name);
        }
return 0;
}

2 个答案:

答案 0 :(得分:1)

==运算符不适用于比较字符串。在这种情况下,它实际上所做的是将字符串Name的起始地址与字符串文字"abc"的起始地址进行比较。这就是警告的意思。

正如警告所言,解决方案是使用strcmp函数。

if (strcmp(Name, "abc") == 0) {

如果两个字符串相同,则此函数返回0;如果左侧操作数为“ greater”,则该函数返回负值;如果右侧操作数为“ greater”,则该函数返回一个正值。

答案 1 :(得分:0)

错误告诉您该怎么办。请改用strcmp。这是您需要包括的头文件和原型:

#include <string.h>

int strcmp(const char *s1, const char *s2);

如果两个字符串彼此相等(表示它们的长度相同且内容相同),则此函数返回0(或false)。

这是在代码中使用它的方式:

if (!strcmp(Name, "abc")) {

您不能使用==比较字符串。 ==比较指针而不是字符串的内容。