-1
#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
返回“高”。为什么这段代码总是打印“不匹配”?为什么这段代码总是打印“不匹配”?
只是一个疯狂的猜测:难道是tmp.sh打印“高”,包括换行符(例如,当使用'echo')...? –
你chmod x那个shell脚本吗? –
它似乎代码正在读取文件'tmp.sh'的内容。逐行。当尝试进行比较时,strcmp()从输入缓冲区中的第一个字符处开始。很可能'高'不是输入缓冲区中的第一个字符,它是从tmp.sh文件中读取的最后一行。建议使用substr()(或类似的函数)来搜索整行)并搜索每一行,而不仅仅是最后一行。 – user3629249