我正在尝试构建一个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 = -... 质量打印正确,但级别为空白。
提前致谢 菲利普