读取多行数据,每行存放一个位置。:读取通过wps模式连接到设备的信息。

  数据的情况是按行存放,行数读取前不固定。 我这个实现方式不一定是最简单方便的,希望有更好的解决方式的网友留言告之~

  当连接一个设备上来的时候是这种,两个如下叠加。  

ff:ff:ff:ff:ff:ff
dot11RSNAStatsSTAAddress=ff:ff:ff:ff:ff:ff
dot11RSNAStatsVersion=1
dot11RSNAStatsSelectedPairwiseCipher=00-0f-ac-4
dot11RSNAStatsTKIPLocalMICFailures=0
dot11RSNAStatsTKIPRemoteMICFailures=0
hostapdWPAPTKState=11
hostapdWPAPTKGroupState=0
wpsUuid=638b7dae-1b43-534b-9456-d05a8dbfef04
wpsPrimaryDeviceType=10-0050F204-5
wpsDeviceName=KNT-111
wpsManufacturer=HUAWEI
wpsModelName=KNT-111
wpsModelNumber=KNT-111
wpsSerialNumber=SWYDU12358512544

  使用ShellCmd命令获取当下信息,并且利用文本处理命令提取当前的modelName

hostapd_cli -i ath0 all_sta | grep wpsModelName | awk -F= ‘{print $2}‘ | sed ‘:a;N;$!ba;s/\n/,/g\‘

  这条命令执行完之后可以得到类似与KNT-111,KNT-222,KNT-333 这种类型的字符串。然后需要将这种字符串按照,号分隔开,分别提取到对于的空间中去,多少行数可以使用如下的命令:

hostapd_cli -i ath0 all_sta | grep wpsModelName | wc -l

  提取该字符串可以使用如下的方式:

int read_wps_device_name_in_str(char *param, int ncount)
{
    char *p;
    char *p2;
    unsigned int len=0;
    unsigned int count=0;
    p2 = param;
    while((count != ncount) && (*p2 != ‘\0‘)) {
        p = strchr(p2,‘,‘);
        if (p) {
            len = p-p2;
            if (len > 64) {
                break;
            }
            strncpy(wps_device[count].DeviceName,p2,len);
            wps_device[count].DeviceName[len] = ‘\0‘;
            count++;
            p2 = p + 1;
        } else {
            break;
        }
    }
    return 0;
}

在使用这个函数处理之前需要将待处理的字符串末尾加上一个‘,’号,总计数值则为行数。

通过shell读取的字符串尾部有个\n符需要剔除掉。

void util_strip_traling_spaces( char* one_string )
{
    char* tmp=one_string;
    int length=strlen(tmp);
    while(
            length
            &&(
                ( tmp[ length-1 ] == ‘\r‘ )
                || ( tmp[ length-1 ] == ‘\n‘ )
                || ( tmp[ length-1 ] == ‘\t‘ )
                || ( tmp[ length-1 ] == ‘ ‘ )
            )
        )
    {
        tmp[ length-1 ]=0;
        length--;
    }
}

buffer[strlen(buffer)] = ‘,‘;
buffer[strlen(buffer) + 1] = ‘\0‘;

时间: 2024-10-13 23:30:48

读取多行数据,每行存放一个位置。:读取通过wps模式连接到设备的信息。的相关文章

java读取excel获取数据写入到另外一个excel

pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4

mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)

转自:http://www.maomao365.com/?p=5323 摘要:下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除”表A”中,ID 为1.2.3.4.5的系统默认数据,通过项目组同事仔细研究,我们得到一致的答案为:在表上新增一个触发器,当删除数据ID为 1 2 3 4 5时候,直接弹出相应的错误,采用这种模式,可以限制所有端口的异常操作(程序 查询分析器),具体实现方式,如下文所示: create trigger trTriggerA on A fo

JAVA TcpServer端使用Scanner读取不到数据的解决办法

在使用JAVA进行Socket通信时,在Server端使用Scanner的nextLine()方法读取数据时,一直读取不到数据是因为Scanner是一个扫描器,它扫描数据都是去内存中一块缓冲区中进行扫描并读入数据的,而我们在控制台中输入的数据也都是被先存入缓冲区中等待扫描器的扫描读取.这个扫描器在扫描过程中判断停止的依据就是“空白符”,空格.回车都算做是空白符.nextInt()方法在扫描到空白符的时候会将前面的数据读取走,但会丢下空白符“\r”在缓冲区中,但是,nextLine()方法在扫描的

C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据

http://blog.csdn.net/sunhero2010/article/details/50980591 练习8.1:编写函数.接受一个istream&参数,返回值类型也是istream&.此函数必须从给定流中读取数据,直至遇到文件结束标识时停止. [cpp] view plain copy #include <iostream> #include <stdexcept> using std::istream; using std::cin; using 

定位表中的行数据存放于哪一个具体的datafile上

副标题:用一个PL/SQL查出表中的行数据存放在哪个具体的datafile中 经常有遇到做DBA的朋友问,该如何知道自己插入的某一行数据,是存在了数据库中的哪一个数据文件(datafile)上了,回答是肯定可以的.在此,就将该方法写出来供更多的朋友使用. 1.正常查询步骤 1.1.先查到表上行数据的ROWID select rowid from tivoli.test_db_avg1 where rownum =1 输出值:   AAAQ0mAAEAAAAhLAAA 1.2.根据ROWID定位到

InnoDB一棵B+树可以存放多少行数据?

InnoDB一棵B+树可以存放多少行数据? 2018-01-19 10:57 飘扬的红领巾 一个问题? InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万.为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构.数据组织方式说起. 我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛.在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是

读取文档数据的各列的每行中

读取文档数据的各列的每行中 1.该文件的内容被读 [[email protected] leekwen]# cat userpwd 1412230101 ty001 1412230102 ty002 1512430102 ty003 1511230102 ty004 1411230102 ty002 1411240102 yt005 1412290102 yt012 1510230102 yt022 1512231212 yt032 2.脚本命令 [[email protected] leekw

根据一列数据 抽取另一个文件的行数据

方法一: 使用awk处理,先读入文件中的一列数据,然后在第二文件中做判断 awk -F'\t' 'FILENAME=="commUsers_Hotel"{F[$0]=1}FILENAME=="Hotel3"{if($0 in F){print}}' commUsers_Hotel Hotel3 > fugai 根据一列数据 抽取另一个文件的行数据,布布扣,bubuko.com

python 读取cvs 文件中多行数据

有的时候我们需要去读取多行多列数据 def duqu(): yiyuan = open('yiyuan_id2.csv','r') lines = yiyuan.readlines() yiyuan.close() for line in lines: id = line.split(',')[0] name = line.split(',')[1] print(id,name)duqu() 1.定义读取函数2.定义变量yiyuan,以只读的方式打开文件3.定义变量lines,通过读取多行数据赋