我是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;
}
答案 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")) {
您不能使用==
比较字符串。 ==
比较指针而不是字符串的内容。