【发布时间】:2014-04-11 18:48:16
【问题描述】:
#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。然而事实并非如此。我该如何解决这个问题?
【问题讨论】:
-
数组是指针。您的
==比较地址位置而不是字符元素 -
@Micka:不,数组不是指针。阅读comp.lang.c FAQ 的第 6 节。
array1==array2进行指针比较是正确的,但这只是因为数组表达式转换为指针。 -
使用函数strncmp。此链接适用于 C++,但在 C 中的工作方式相同。
-
@eventHandler: 为什么是
strncmp而不是strcmp? -
是的,这样更好。我昨天正在使用 strncmp 比较某种字符串。弄糊涂了。 strcmp 更适合这个。