c - 为什么两个字符串在与 equals == 运算符比较时,即使输出相同,也不匹配?

标签 c string character-encoding

<分区>

Possible Duplicate:
How to compare strings in an “if” statement?

我使用的是 C。我的两个字符串与等号 == 运算符相比时不匹配,即使标准输出看起来相同。

考虑其中一个数组以整数数组开始,我通过向每个整数添加“0”并将其加载到另一个 char * 数组中将其转换为字符。

所以现在两个数组都是具有字符和相同标准输出的字符数组,但我的“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);
        }
    }
}

最佳答案

为了比较字符串,您需要使用strcmp 而不是==

== 验证它们指向相同的地址,而 strcmp 将比较两个 char* 并在每个字符匹配时返回 true 直到它命中 \0

关于c - 为什么两个字符串在与 equals == 运算符比较时,即使输出相同,也不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593453/

相关文章:

c# - 为什么 Char.IsDigit 为无法解析为 int 的字符返回 true?

java - 即使在使用 UTF8 之后,处理 InputStreamReader 时也不会保留字符编码

c - 如何在 C 中将 float 转换为字符串而不丢失用户输入的精度?

C# - PHP 字符编码不匹配

c - 输入字符串后程序崩溃

c - char 数组上的 stdlib.h qsort() 在 c 中崩溃

c - 如何在c中将多个字符插入到char数组的中间?

c - 在不使用指针的情况下反向打印 C 字符串?

c - 当我执行 "kill -11 0"时,我的 shell 出现段错误

c - 为什么在 MacOS Sierra 上的 C 语言中,该程序会更改数组的整数值?