具有命令行执行的C程序缺少输出
我正在尝试建立一个C程序,它将在不同的时间间隔采取WIFI质量和信号水平。我有命令行执行和解析等质量,但信号水平没有得到保存。我尝试了具有命令行执行的C程序缺少输出,c,command-line,C,Command Line,我正在尝试建立一个C程序,它将在不同的时间间隔采取WIFI质量和信号水平。我有命令行执行和解析等质量,但信号水平没有得到保存。我尝试了echo quality=45/70 Signal level=-75dbs,这个代码片段工作得很好,但不适用于真正的命令行代码。我不明白为什么它会对质量有效,但对信号强度无效?为代码质量道歉我才刚开始学习C #include <stdio.h> int main(void) { FILE *in; extern FILE *popen(); ch
echo quality=45/70 Signal level=-75dbs
,这个代码片段工作得很好,但不适用于真正的命令行代码。我不明白为什么它会对质量有效,但对信号强度无效?为代码质量道歉我才刚开始学习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);
}
#包括
内部主(空){
文件*in;
外部文件*popen();
字符buff[512];
char str[60]={''};
char ssid[40]={”“};
字符质量[6]={“};
字符级别[5]={“};
炭温[2];
如果(!(in=popen(“iwlist wlan0扫描| grep-e‘信号电平’,“r”)){
出口(1);
}
整圈=1;
while(fgets(buff,sizeof(buff),in)!=NULL){
strcat(str,buff);
intz;
对于(z=0;zyou可能需要确保str
在strcat(str,buff)中足够大
因为它一直附加到str,也许你是指strcpy?嗨,哗众取宠…我尝试了一下,但没有任何乐趣。str的大小是60,buff的大小是512。它甚至可能在循环的第一次迭代中崩溃。也许你可以从命令shell调用命令iwlist…| grep-e…
并发布你得到的确切信息。复制值的方式ntoquality
和level
太复杂了,但它们应该可以在Ingo Leonhardt中工作。我从命令shell中获得正确的输出。嗨,joop,512处的str和buff也不能工作。