我想在removeNameCard函数下帮助我的比较函数。即使输出显示相同的名称,在if语句中比较它们也会被跳过。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 5
typedef struct
{
int nameCardID;
char personName[20];
char companyName[20];
}NameCard;
NameCard inputRecord[MAX];
int I;
char* p;
void removeNameCard()
{
char* a;
char* b;
char value[20];
NameCard temp[MAX];
printf("Enter personName:n");
while ((getchar()) != 'n');
fgets(value, 20, stdin);
if (inputRecord[0].nameCardID != 0) {
for (int x = 0; x < MAX; x++) {
a = value;
b = inputRecord[x].personName;
printf(a);
printf(b);
if (value == inputRecord[x].personName) {
for (int j = x; j < MAX; j++) {
inputRecord[j] = inputRecord[j + 1];
}
inputRecord[MAX - 1].nameCardID = 0;
i -= 1;
printf("The name card is removedn");
return;
}
else {
printf("The target person name is not in the name card holdern");
}
}
}
else {
printf("The name card holder is emptyn");
}
}
我的问题是a和b的值不相同,因此当我在if语句上比较它时,它总是跳过。有没有一种方法来检索只是字符值的a和b没有地址?
你不应该使用==(相等操作符)来比较字符串,因为它们比较的是字符串的引用,即两个char指针是否指向内存中的相同位置。另一方面,strcmp()方法比较两个字符串的值是否相等。
似乎你比较了if-condition中的两个字符串。我的意思是你不能在if条件下等价两个字符串,我的建议是试试
strcmp(value,inputRecord[x].personName)==0
而不是
value == inputRecord[x].personName
代码中的。即使字符串有大小写字母,只要包含这个(#include