sscanf函数的的一些用法

来自:https://blog.csdn.net/msgsnd/article/details/2122440

文章结尾部分为自己总结使用的tips。

sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。

函数原型:

int scanf( const char *format [,argument]… );
其中的format可以是一个或多个:

{%[*] [width] [{h|l|I64|L}] type|’_’|’/t’|’/n’|非%符号},

注:{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。

width:宽度,一般可以忽略,用法如:

const char sourceStr[] = “hello, world”;

char buf[10] = {0};

sscanf(sourceStr, “%5s”, buf); //%5s,只取5个字符

cout << buf<< endl;

结果为:hello

{h|I|I64|L}:参数的size,通常h表示单字节size,I表示2字节 size, L表示4字节size(double例外),l64表示8字节size。

type :这就很多了,就是%s,%d之类。

特别的:%*[width] [{h|l|I64|L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值。如:

const char sourceStr[] = “hello, world”;

char buf[10] = {0};

sscanf(sourceStr, “%*s%s”, buf);

//%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了

cout << buf<< endl;

结果为:world

支持集合操作:

%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)

%[aB’] 匹配a、B、’中一员,贪婪性

%[^a] 匹配非a的任意字符,贪婪性

和正则表达式很相似,而且仍然支持过滤,即可以有%*[a-z]。


例子:

  1. 常见用法。
    char buf[512] = {0};

    sscanf("123456 ", "%s", buf);

    printf("%s/n", buf);

    结果为:123456
  1. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
    sscanf("123456 ", "%4s", buf);

    printf("%s/n", buf);

    结果为:1234
  1. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
    sscanf("123456 abcdedf", "%[^ ]", buf);

    printf("%s/n", buf);

    结果为:123456
  1. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
    sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);

    printf("%s/n", buf);

    结果为:123456abcdedf
  1. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
    sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);

    printf("%s/n", buf);

    结果为:123456abcdedf

6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 “iios/”过滤掉,再将非’@’的一串内容送到buf中

    sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);

    printf("%s/n", buf);


    结果为:12DDWDFF

7、给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格)

    sscanf(“hello, world”,  "%*s%s",  buf);  

    printf("%s/n", buf);

    结果为:world

%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了,如果没有空格则结果为NULL。

8、分隔字符串2006:03:18:

int a, b, c;

sscanf("2006:03:18", "%d:%d:%d", a, b, c);

9、分隔字符串2006:03:18 - 2006:04:18:

    char sztime1[16] = "", sztime2[16] = "";

    sscanf("2006:03:18 - 2006:04:18", "%s - %s", sztime1, sztime2);

10、分隔字符串2006:03:18-2006:04:18:

    char sztime1[16] = "", sztime2[16] = "";

    sscanf("2006:03:18-2006:04:18", "%[0-9,:] - %[0-9,:]", sztime1, sztime2);

仅仅是取消了‘-’两边的空格,却打破了%s对字符串的界定format-type中有%[]这样的type field。如果读取的字符串,不是以空格来分隔的话,就可以使用%[]。%[]类似于一个正则表达式。[a-z]表示读取a-z的所有字符,[^a-z]表示读取除a-z以外的所有字符。

sscanf的功能很类似于正则表达式, 但却没有正则表达式强大,所以如果对于比较复杂的字符串处理,建议使用正则表达式.

正则表达式的基本用法:

1、“.”为通配符,表示任何一个字符,例如:“a.c”可以匹配“anc”、“abc”、“acc”;

2、“[]”,在[]内可以指定要求匹配的字符,例如:“a[nbc]c”可以匹配“anc”、“abc”、”acc”;但不可以匹配“ancc”,a到z可以写成[a-z],0到9可以写成[0-9];

3、数量限定符号,表示匹配次数(或者叫做长度)的符号,包括:

“*” 0次或者多次

“+” 1次或者多次

“?” 0次或者1次

“{n}” 匹配n次,n为整数

“{n,m}” 匹配从n到m之间的某个数的次数;n和m都是整数;

“{n,}” 匹配n到无穷次之间任意次数;

“{,m}” 匹配0到m之间任意次数;

数量限定符号放到匹配格式的后面,例如:电话号码:024-84820482,02484820482(假设前面3或者4位,后面7或者8位,并且中间的减号可有可无),都是符合规定的,那么可以用如下格式来匹配:[0-9]{3,4} /-? [0-9]{7,8};注意:“/”为转义字符,因为“-”在正则表达式用有代表一个范围的意义,例如:前面所说的[0-9],所以它需要转义字符“/”进行转义才可使用;

4、^为否符号,表示不想匹配的符号,例如:[^z][a-z]+可以匹配所有除”z”开头的以外的所有字

如果^放到[]的外边则表示以[]开头的字符串;^[az][a-z]+表示a或者z开头的长度大于等于2的英文字符串;

5、“|”或运算符,例如:a[n|bc|cb]c可以匹配“abcc”,“anc”,“acbc”;

6、“ a b + 就可以被“abb”,“ab”匹配;

7、一些简单表示方法:/d表示[0-9];/D表示[^0-9];/w表示[A-Z0-9];/W表示[^A-Z0-9];/s表示[/t/n/r/f],就是空格字符包括tab,空格等等;/S表示[^/t/n/r/f],就是非空格字符;


%[^a] 匹配非a的任意字符,贪婪性

    sscanf("123456 abcdedf", "%[^ ]", buf);
    printf("%s/n", buf);
    结果为:123456

在字符串iios/12DDWDFF@122中获取12DDWDFF
%*[^/]/匹配到 /
%[^@]匹配到@

sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s/n", buf);
结果为:12DDWDFF

获取channel
在字符串Mode:Managed Channel=36 Access Point: 34:BA:9A:64:04:49中获取36
%*[^=]=匹配到 =,我们要获取的是36,而不是=36,所以会有=]后多一个=
%[^A]匹配到A

sscanf("Mode:Managed  Channel=36  Access Point: 34:BA:9A:64:04:49", "%*[^=]=%[^A]\n", tempstr);  
printf("tempstr:%s\n", tempstr);

tempstr:36





一些测试
aplist文件内容:

wlan0     Scan completed :
          Cell 01 - Address: 34:BA:9A:64:04:48
                    ESSID:"FURRIONAP_640448"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.422 GHz (Channel 3)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=77/100  Signal level=-59 dBm  
                    Extra:fm=0003
          Cell 02 - Address: 06:69:6C:25:09:96
                    ESSID:"Guest"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Encryption key:on
                    Bit Rates:144 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=76/100  Signal level=-90 dBm  
                    Extra:fm=0003
          Cell 03 - Address: 0A:69:6C:25:09:96
                    ESSID:"STAFF"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Encryption key:on
                    Bit Rates:144 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=99/100  Signal level=-93 dBm  
                    Extra:fm=0003
          Cell 04 - Address: 34:BA:9A:20:65:04
                    ESSID:"Internet_Domowy_206504"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DDA70050F204104A0001101044000102103B000103104700102880288028801880A88034BA9A2065041021001852616C696E6B20546563686E6F6C6F67792C20436F72702E1023001C52616C696E6B20576972656C6573732041636365737320506F696E74102400065254323836301042000831323334353637381054000800060050F20400011011000952616C696E6B41505310080002210C103C0001011049000600372A000120
                    Quality=100/100  Signal level=-78 dBm  
                    Extra:fm=0003
          Cell 05 - Address: 06:69:6C:25:06:56
                    ESSID:"Guest"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Encryption key:on
                    Bit Rates:144 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=100/100  Signal level=-86 dBm  
                    Extra:fm=0001
          Cell 06 - Address: 00:11:22:33:44:55
                    ESSID:"Internet_Domowy_334455"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DDA70050F204104A0001101044000101103B000103104700102880288028801880A8800011223344551021001852616C696E6B20546563686E6F6C6F67792C20436F72702E1023001C52616C696E6B20576972656C6573732041636365737320506F696E74102400065254323836301042000831323334353637381054000800060050F20400011011000952616C696E6B41505310080002210C103C0001011049000600372A000120
                    Quality=100/100  Signal level=-76 dBm  
                    Extra:fm=0003
          Cell 07 - Address: 34:BA:9A:5D:EF:42
                    ESSID:"Internet_Domowy_5DEF42"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DDA70050F204104A0001101044000101103B000103104700102880288028801880A88034BA9A5DEF421021001852616C696E6B20546563686E6F6C6F67792C20436F72702E1023001C52616C696E6B20576972656C6573732041636365737320506F696E74102400065254323836301042000831323334353637381054000800060050F20400011011000952616C696E6B41505310080002210C103C0001011049000600372A000120
                    Quality=100/100  Signal level=-90 dBm  
                    Extra:fm=0003
          Cell 08 - Address: 0A:69:6C:25:06:56
                    ESSID:"STAFF"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Encryption key:on
                    Bit Rates:144 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=0/100  Signal level=-90 dBm  
                    Extra:fm=0001
          Cell 09 - Address: 50:04:B8:53:0D:F8
                    ESSID:"HUAWEI-BEVAQ8"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:off
                    Bit Rates:300 Mb/s
                    IE: Unknown: DDA60050F204104A0001101044000102103B00010310470010630412531019200612285004B8530DFC1021001B5265616C74656B2053656D69636F6E647563746F7220436F72702E1023000752544C387878781024000D45562D323031302D30392D32301042000F3132333435363738393031323334371054000800060050F2040001101100114144534C204D6F64656D2F526F757465721008000206801049000600372A000120
                    Quality=36/100  Signal level=-79 dBm  
                    Extra:fm=0003
          Cell 10 - Address: 38:37:8B:92:2E:2C
                    ESSID:"Atel_JG"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DDA60050F204104A0001101044000102103B000103104700106304125310192006122838378B922E301021001B5265616C74656B2053656D69636F6E647563746F7220436F72702E1023000752544C387878781024000D45562D323031302D30392D32301042000F3132333435363738393031323334371054000800060050F2040001101100114144534C204D6F64656D2F526F757465721008000206801049000600372A000120
                    Quality=100/100  Signal level=-78 dBm  
                    Extra:fm=0003
          Cell 11 - Address: 1C:15:1F:27:62:D8
                    ESSID:"LHE"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DD470050F204104A0001101044000102101100114144534C204D6F64656D2F526F7574657210080002068010470010630412531019200612281C151F2762DC1049000600372A000120
                    Quality=68/100  Signal level=-96 dBm  
                    Extra:fm=0001
          Cell 12 - Address: 34:BA:9A:63:78:5A
                    ESSID:"PLDT_Home_jjjjjjjjjj"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.457 GHz (Channel 10)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:wpa_ie=dd1a0050f20101000050f20202000050f2020050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DDA70050F204104A0001101044000102103B000103104700102880288028801880A88034BA9A63785A1021001852616C696E6B20546563686E6F6C6F67792C20436F72702E1023001C52616C696E6B20576972656C6573732041636365737320506F696E74102400065254323836301042000831323334353637381054000800060050F20400011011000952616C696E6B41505310080002218C103C0001011049000600372A000120
                    Quality=66/100  Signal level=-90 dBm  
                    Extra:fm=0003
          Cell 13 - Address: 34:BA:9A:5D:FA:F8
                    ESSID:"PT30-WP"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.452 GHz (Channel 9)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DD310050F204104A0001101044000102104700102880288028801880A88034BA9A5DFAF8103C0001011049000600372A000120
                    Quality=97/100  Signal level=-90 dBm  
                    Extra:fm=0001
          Cell 14 - Address: 06:AA:BB:CC:00:06
                    ESSID:"FURRIONAP_CC0006"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.467 GHz (Channel 12)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=20/100  Signal level=-91 dBm  
                    Extra:fm=0003
          Cell 15 - Address: 34:BA:9A:5D:13:35
                    ESSID:"FURRIONAP_5D1335"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.472 GHz (Channel 13)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=34/100  Signal level=-93 dBm  
                    Extra:fm=0003
          Cell 16 - Address: EC:26:CA:86:A9:8C
                    ESSID:"ASA"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=15/100  Signal level=-96 dBm  
                    Extra:fm=0003
          Cell 17 - Address: 34:BA:9A:5D:F3:1B
                    ESSID:"ALR-F30G-5DF31B"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.472 GHz (Channel 13)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=20/100  Signal level=-85 dBm  
                    Extra:fm=0001
          Cell 18 - Address: 34:BA:9A:65:43:21
                    ESSID:"FURRIONAP_654321"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.472 GHz (Channel 13)
                    Encryption key:on
                    Bit Rates:300 Mb/s
                    Extra:wpa_ie=dd160050f20101000050f20401000050f20401000050f202
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra:
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=100/100  Signal level=-77 dBm  
                    Extra:fm=0003
          Cell 19 - Address: 28:80:A2:1B:88:40
                    ESSID:"skyus_testing_xs"
                    Protocol:IEEE 802.11bgn
                    Mode:Master
                    Frequency:2.472 GHz (Channel 13)
                    Encryption key:on
                    Bit Rates:72 Mb/s
                    Extra:rsn_ie=30140100000fac040100000fac040100000fac020c00
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Quality=58/100  Signal level=-99 dBm  
                    Extra:fm=0003



json_object* get_apconflist()
{
        int index,count=0,i;
        char str[512]={0};
        char tempstr[256]={0};
        FILE *fp;
        //char aplist[20][5][1024];
        json_object* getapconf_array_list;
        getapconf_array_list = json_object_new_array();     
        my_printf(LOG_MODE_LEVEL_1, "%s(%d) get_apconflist\n",__FUNCTION__,__LINE__);
        system("iwlist wlan0 scan > /tmp/aplist");
        if ((fp=fopen("/tmp/aplist","r"))!=NULL)
        {
            while (fgets(str, 512, fp) != NULL)
            {
                if(strstr(str,"Cell") != NULL)
                {
                    count++;
                }
            }
            fclose(fp); 
            my_printf(LOG_MODE_LEVEL_1, "%s(%d) count is %d\n",__FUNCTION__,__LINE__,count);
        }
        if ((fp=fopen("/tmp/aplist","r"))!=NULL)
        {
            APLIST aplist[count];
            for(i=0;i<count;i++)
            {
                json_object *rsp_json = NULL;       
                rsp_json = json_object_new_object();
                CHECK_NEW_JSON(rsp_json);       
                my_printf(LOG_MODE_LEVEL_1, "%s(%d) for is ok\n",__FUNCTION__,__LINE__);
                while (fgets(str, 512, fp) != NULL)
                {
                    if(strstr(str, "Address:")) // Address: 06:69:6C:25:09:96
                    {
                        sscanf(str,"%*[^:]: %[^\n]\n",tempstr);
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) tempstr is %s\n",__FUNCTION__,__LINE__,tempstr);
                        strcpy(aplist[i].bssid,tempstr);
                        json_object_object_add(rsp_json, "index", json_object_new_int(i+1));
                        json_object_object_add(rsp_json, "bssid", json_object_new_string(aplist[i].bssid));
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) bssid is %s\n",__FUNCTION__,__LINE__,aplist[i].bssid);
                    }
                    if(strstr(str, "ESSID:")) // ESSID:"FURRIONAP_640448"
                    {
                        sscanf(str,"%*[^\"]\" %[^\"]\n",tempstr);
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) tempstr is %s\n",__FUNCTION__,__LINE__,tempstr);
                        strcpy(aplist[i].ssid,tempstr);
                        json_object_object_add(rsp_json, "ssid", json_object_new_string(aplist[i].ssid));
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) ssid is %s\n",__FUNCTION__,__LINE__,aplist[i].ssid);
                    }
                    if(strstr(str, "Frequency:")) // Frequency:2.412 GHz (Channel 1)
                    {
                        sscanf(str,"%*[^l]l %[^)]\n",tempstr);
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) tempstr is %s\n",__FUNCTION__,__LINE__,tempstr);
                        strcpy(aplist[i].channel,tempstr);
                        json_object_object_add(rsp_json, "channel", json_object_new_string(aplist[i].channel));
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) channel is %s\n",__FUNCTION__,__LINE__,aplist[i].channel);
                    }
                    if(strstr(str, "Encryption key:")) //  Encryption key:on
                    {
                        sscanf(str,"%*[^:]: %[^\n]\n",tempstr);
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) tempstr is %s\n",__FUNCTION__,__LINE__,tempstr);
                        if(strstr(tempstr,"off"))
                        {
                            strcpy(aplist[i].security_mode,"Disable");
                            json_object_object_add(rsp_json, "security_mode", json_object_new_string(aplist[i].security_mode));
                            my_printf(LOG_MODE_LEVEL_1, "%s(%d) security_mode is %s\n",__FUNCTION__,__LINE__,aplist[i].security_mode);
                        }
                    }
                    if(strstr(str,"WPA Version")) //IE: WPA Version 1
                    {
                        strcpy(aplist[i].security_mode,"WPA1PSK");
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) security_mode is %s\n",__FUNCTION__,__LINE__,aplist[i].security_mode);
                    }
                    if(strstr(str,"802.11i/WPA2 Version")) //IE: IEEE 802.11i/WPA2 Version 1
                    {
                        if(strstr(aplist[i].security_mode,"WPA1PSK"))
                        {
                            strcat(aplist[i].security_mode,"WPA2PSK");
                            my_printf(LOG_MODE_LEVEL_1, "%s(%d) security_mode is %s\n",__FUNCTION__,__LINE__,aplist[i].security_mode);
                        }
                        else 
                        {
                            strcpy(aplist[i].security_mode,"WPA2PSK");
                            my_printf(LOG_MODE_LEVEL_1, "%s(%d) security_mode is %s\n",__FUNCTION__,__LINE__,aplist[i].security_mode);
                        }
                    }
                    if(strstr(str,"Pairwise Ciphers")) //Pairwise Ciphers (1) : CCMP
                    {
                        if(strstr(aplist[i].security_mode,"WPA1PSK"))
                        {
                            sscanf(str,"%*[^:]: %[^\n]\n",tempstr);
                            if(strstr(tempstr,"TKIP CCMP"))
                            {
                                strcpy(aplist[i].security_mode,"WPA1PSK/TKIPAES");
                            }
                            else 
                                strcpy(aplist[i].security_mode,"WPA1PSK/AES");
                        }
                        if(strstr(aplist[i].security_mode,"WPA2PSK"))
                        {
                            sscanf(str,"%*[^:]: %[^\n]\n",tempstr);
                            if(strstr(tempstr,"TKIP CCMP"))
                            {
                                strcpy(aplist[i].security_mode,"WPA1PSKWPA2PSK/TKIPAES");
                            }
                            else 
                                strcpy(aplist[i].security_mode,"WPA1PSKWPA2PSK/AES");
                        }

                        json_object_object_add(rsp_json, "security_mode", json_object_new_string(aplist[i].security_mode));
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) security_mode is %s\n",__FUNCTION__,__LINE__,aplist[i].security_mode);
                    }
                    if(strstr(str, "Signal level")) // Signal level=-59 dBm  
                    {
                        sscanf(str,"%*[^-]%[^\n]\n",tempstr);
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) tempstr is %s\n",__FUNCTION__,__LINE__,tempstr);
                        strcpy(aplist[i].signLevel,tempstr);
                        json_object_object_add(rsp_json, "signLevel", json_object_new_string(aplist[i].signLevel));
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) signLevel is %s\n",__FUNCTION__,__LINE__,aplist[i].signLevel);
                        my_printf(LOG_MODE_LEVEL_1, "%s(%d) final_rsp_json %s\n",__FUNCTION__,__LINE__,json_object_to_json_string(rsp_json));
                        json_object_array_add(getapconf_array_list,rsp_json);
                        break;
                    }
                }
            }

        }
        fclose(fp); 
//  my_printf(LOG_MODE_LEVEL_1, "%s(%d) final_json %s\n",__FUNCTION__,__LINE__,json_object_to_json_string(getapconf_array_list));
    return getapconf_array_list;

}

猜你喜欢

转载自blog.csdn.net/linbounconstraint/article/details/80830393