我刚开始研究C,所以这可能是一个愚蠢的问题,但这里是:
首先,我使用这个标志:-std = c99 -Wall
我有一个char指针数组,称之为arr 我也有一个char指针,称之为X. 我也知道arr中存在多少项(指针),我把这个数字保存在一个名为:Uniq_names
的int中现在我想知道是否有办法检查ar内是否存在X
我试过这样做:
int i = 0;
while (i < Uniq_names){
if (X == arr[i]){
//do something
}
i++;
}
但它不起作用,我无法弄清楚原因。
那么为什么不做这项工作呢?我该怎么办呢?
编辑1: 我确实希望代码能够得到评论(在这里我用来打印一个操作),但它从来没有。
我知道一个事实是指向对象的指针确实存在于数组中并指向与指针X指向的对象相同的对象。
假设arr包含一个指向K的指针,我比较的指针X也指向K,所以这两个指针是相同的(不是吗? )但仍然是&#34;内部的代码;如果&#34;声明永远不会运行。
希望这更清楚。
编辑2:
谢谢大家!,当我使用strcmp时问题解决了!
Big thx!
答案 0 :(得分:2)
答案 1 :(得分:1)
X == arr[i]
检查指针(即内存地址)是否相同。如果您正在尝试查看第一个char值是否相同,则需要取消引用两者并比较显式值。在这种情况下,您需要*X == *arr[i]
。
要比较字符串,您可以使用简单的for
循环。
bool matches;
char* X = arr[i];
int j = 0;
while *X!= NULL;{
if(X[j]==arr[i][j]){
matches = true;
j++;
}
else{
matches = false;
break;
}
此示例区分大小写。