命令行执行时缺少C程序的输出

时间:2014-06-10 12:13:07

标签: c command-line

我正在尝试构建一个C程序,它将以不同的间隔获取WIFI质量和信号级别。我有命令行执行和解析等质量但信号级别没有得到保存。我尝试echo quality=45/70 Signal level=-75 dbs,这段代码片段完美无缺,但不适用于真正的命令行代码。我无法弄清楚为什么它会对质量起作用而不是信号强度?代码质量的道歉我才开始学习C。

#include <stdio.h>

int main(void) {

FILE *in;
extern FILE *popen();
char buff[512];
char str[60]={" "};
char ssid[40]={""};
char quality[6]={""};
char level[5]={""};
char temp[2];

if(!(in = popen("iwlist wlan0 scan | grep -e 'Signal level' ", "r"))){
    exit(1);
}


int turn=1;
while(fgets(buff, sizeof(buff), in)!=NULL){
    strcat(str, buff);

    int z;
    for(z=0;z<30;z++){

        if(str[z] == '='){
            printf("\n ::::: %s", str);
            z++;
            int limit;
            if(str[z]=='-'){
                int y;
                limit=z+4;
                for(y=z; y< limit; y++, z++){

                    sprintf(temp, "%c", str[y]);
                    strcat(level, temp);
                }
            }else{
                int x;
                limit=z+5;
                for(x=z; x<limit ; x++, z++){

                    sprintf(temp, "%c", str[x]);
                    strcat(quality, temp);
                }
                printf("\n ::::: %s", str);
            }

        }
    }
}   
printf("\n printing quality::::: %s", quality);
printf("\n printing signal level:::::: %s", level);
printf("\n ::::: %s", str);
pclose(in);  
}

每个print str打印完整的正确字符串:Quality = ... Signal level = -... 质量打印正确,但级别为空白。

提前致谢 菲利普

0 个答案:

没有答案