-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