2014-03-31 66 views
0
int main (int argc, char *argv[]) 
{ 
    FILE *in; 
    extern FILE *popen(); 
    char buff[512]; 
    char buff2[1024]; 

    snprintf(buff2, 1024, "ifconfig eth0 | grep HWaddr | awk '{for(i=0;i<5;i++) sub(":","-",$5); print $5}'"); 
    if(!(in = popen(buff2, "r"))) 
    { 

      exit(1); 
    } 

    while(fgets(buff, sizeof(buff), in)!=NULL){ 
      printf("%s", buff); 
    } 
    pclose(in); 

    return 0; 
} 

我不知道为什么我得到这个错误,请问有人能帮助我。error:expected')'before':'token

+1

请注明确切的线,并重新格式化您的文章,是不是所有的格式化为代码大气压。 – Deduplicator

+0

而不是'extern FILE * popen();',包含正确的头文件,然后编译器会为你检查参数,可能会诊断更多的错误。 –

回答

4

看看你在这条线使用开/关双引号的:

snprintf(buff2, 1024, "ifconfig eth0 | grep HWaddr | awk '{for(i=0;i<5;i++) sub(":","-",$5); print $5}'"); 

权之前,您关闭双引号。试着逃避与\在字符串中的双引号”。

+0

非常感谢你RobP,对不起,感谢你的帮助 – Raghu

+0

@Raghu你应该避免在评论中说出谢意,相反,你可以标记答案或者用两个箭头给出答案。你可以对评论做同样的事情 – orezvani

+0

@emab:我没有看到说谢谢你有什么错,但是你是对的,你应该这样做其他的东西至少也是如此。无论如何,欢迎您致电 – Chuck

0

试试你的字符串中的转义的引号。

相关问题