为什么此代码始终打印"不匹配"?

时间:2015-06-19 19:53:05

标签: c compare popen strcmp

#include <stdio.h>

int main(int argc, char const *argv[])
{
    FILE *ls = popen("tmp.sh", "r");
    char char_array[256];
    while (fgets(char_array, sizeof(char_array), ls) != 0) {
       //NOP
    }
    char *ptr_somechar = &char_array[0];
    char *pointer = "high";
    if (strcmp(pointer, ptr_somechar) == 0) 
    { 
        printf("%s\n", "match");
    } else 
    { 
        printf("%s\n", "not matched");
    }
    pclose(ls);
    return 0;
}

我想比较输出和线。 tmp.sh返回&#34;高&#34;。为什么此代码始终打印&#34;不匹配&#34;?

1 个答案:

答案 0 :(得分:2)

文件中的字符串"high"后面跟一个换行符,而fgets也会读取\n。您需要在比较之前删除该字符。