我想解析一些像这样的字符串:
Chain FW_USER_IN (0 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.10.12
0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.10.12
我不需要排在前两位! 我的代码是这样的,但我可以获得目标字段!
FILE *handle;
char *str1;
int num1;
handle = popen("iptables -t mangle -x -v -L FW_USER_IN -n","r");
while (('\n' != fgetc(handle)) && !feof(handle));
while (('\n' != fgetc(handle)) && !feof(handle));
num1 =1;
while(num1=1){
num1 = fscanf(handle,"%*d %*d %*s %*s %*s %*s %*s %*s %s",str1);
printf("str1:%s\n",str1);
}
fclose(handle);
但我得到的str1总是为NULL! 我该怎么办?
答案 0 :(得分:2)
您尚未为str1
分配内存。这是核心问题。 scanf
正在读取未初始化的内存,这会导致未定义的行为。
<强>更新强>
正如@BLUEPIXY在评论中指出的那样,您还需要更改
while(num1=1){
到
while(num1==1){