0
如果已經得到解答,但是我還沒有找到解決我的問題的答案,表示抱歉。 我想傳遞一個系統字符串在C:命令的bash的版本是如何在C字符串中傳遞包含引號的系統命令
grep -w "dog\|animal" myfile
我有以下的C代碼:
char str[50] ="dog\\|animal";
char file[50]="myfile";
char buf[20];
snprintf(buf, sizeof(buf), "grep -w \"%s\" %s",str,file);
system(buf);
當我編譯並運行它,我給此錯誤:
sh: 1: Syntax error: Unterminated quoted string
最低例如:
#include <stdio.h>
#include <string.h>
int main(){
char str[50] ="dog\\|animal";
char file[50]="myfile";
char buf[20];
snprintf(buf, sizeof(buf), "grep -w \"%s\" %s",str,file);
system(buf);
}
您有兩個組件字符串大小爲50,並且您試圖將它們擠入一個20字節的目標。你應該使用200或20個。無論如何,20個太短。你有12個字符的開銷加6個文件名和11個匹配模式。這不會導致幸福。 (請注意,如果你檢查過'snprintf()'的返回值,它會告訴你它需要更多的空間。最基本的調試技術將添加'printf(「[%s] \ n」,buf)'來顯示正在執行的內容。 –
好的,固定的..我剛剛刪除了違規行。最小的例子是我的代碼的文字片段編譯和「運行」 –
@JonathanLeffler哦,上帝我是個白癡,我認爲它是200 –