我正在使用C.与equals ==运算符相比,我的两个字符串不匹配,即使std输出看起来相同。
考虑一个以整数数组开始的数组,我通过向每个整数添加一个'0'并加载到另一个char *数组中来转换为字符。
所以现在两个数组都是带有字符和相同std输出的字符数组,但我的“if”选择结构不能与它们匹配。我使用char *名称来引用每个数组。
如有必要,我可以发布整个代码。这是一个比较循环:
i=0;
pipx = (char*)malloc(sizeof(char));
sec = (char*)malloc(sizeof(char));
//for (b = 0; b < lengthx; b++){
//reallocate a second array
pipx = (char*)realloc(sec, ((i+1)*sizeof(char)) );
sec = pipx;
//add bitstr[b] to second array
sec[i] = (char)bitstr[b] + '0';
i++;
for (m = 0; m < k; m++){
printf("codex[m].bitx:%s", codex[m].bitx);
printf("sec:%s|\n", sec);
printf("seclen: %i", (int)strlen(sec));
printf("codex[m].bitxlen: %i\n", (int)strlen(codex[m].bitx));
if ((char*)sec == (char*)codex[m].bitx){
printf("This should output: %s", sec);
printf("Here ---------------------- Here");
//allocate the second array to zero
i=0;
sec = (char*)malloc(0);
}
}
}
答案 0 :(得分:4)
为了比较字符串,您需要使用strcmp
代替==
==
验证它们指向相同的地址,而strcmp
将比较两个字符*并且如果每个字符匹配则返回true,直到它到达\0
答案 1 :(得分:1)
那是因为您正在比较以查看两个变量是否指向相同的内存地址,而不是两个内存地址的信息是否相同。 总是使用strcmp
答案 2 :(得分:0)
您正在比较文字指针值而不是指针指向的字符串。
正如其他人所说,查找strcmp()
和朋友。