#include <stdio.h>
#include <stdlib.h>
int main()
{
char array1 [50];
char array2 [50];
printf("enter a string:\n");
fgets(array1, 50, stdin);
printf("enter a string2:\n");
fgets(array2, 50, stdin);
if (array1==array2){
printf("True");
}
}
如果我输入两次相同的字符串,则此代码应为true。但事实并非如此。我该如何解决这个问题?
答案 0 :(得分:2)
要比较可以使用strcmp
的字符串,请在string.h
array1
和array2
是指向字符串开头的指针。因此,此代码array1==array2
比较指针而不是字符串。
答案 1 :(得分:1)
使用strcmp
之类的
if (!strcmp(array1,array2))
printf("true\n");
请参阅strcmp(3)
您的比较array1 == array2
正在比较地址(因此无效)。
答案 2 :(得分:1)
您正在将两个指针与数组的内存位置进行比较。
您可以使用strcmp
:
if (strcmp(str1,str2) == 0) {
printf("they match!");
}
或者更详细地说,您需要比较数组中每个条目的值:
int i;
int match = 1;
for (i = 0; i < 50; i++) {
if (array1[i] != array2[i]) {
match = 0;
break;
}
}
if (match == 1) {
printf("They match");
} else {
printf("They do not match");
}
答案 3 :(得分:0)
你在那里比较两个指针。你想要strncmp(array1, array2, 50) == 0
答案 4 :(得分:0)
您应该使用strcmp
或strncmp
。
例如:
int result = strncmp(string1, string2, compareLimit);
,其中compareLimit
是要比较的字符数。
result
会告知您相等0
或string1
是否大于或小于string2
。
答案 5 :(得分:0)
这取决于你的意思。您想要完全相同的字节序列,还是需要与语言环境相关的比较?
第一个处理strcmp()
,第二个处理strcoll()
。两者都在<string.h>
。