【发布时间】:2021-12-06 03:09:15
【问题描述】:
我想帮助我在 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 removed\n");
return;
}
else {
printf("The target person name is not in the name card holder\n");
}
}
}
else {
printf("The name card holder is empty\n");
}
}
我的问题是 a 和 b 的值不一样,因此当我在 if 语句上比较它时,它总是会跳过。有没有办法在没有地址的情况下只检索 a 和 b 的 char 值?
【问题讨论】:
-
当您使用
==比较数组或指针时,您比较的是指针,而不是它们指向的内容。要比较以 null 结尾的字符串,请使用strcmp。老实说,任何书籍、教程或课程都应该教给你。 -
使用
strcmp比较字符串,而不是==。