KilluaZoldyck 2020-01-01
实例:
#include<stdio.h> #include<string.h> int main() { //1. 取指定长度的字符串 char str[100]; sscanf("12345","%4s",str); printf("%s\n",str);//1234 //2. 格式化时间 int year, month, day, hour, minute, second; sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year, &month, &day, &hour, &minute, &second); printf("time=%d-%d-%d %d:%d:%d\n", year, month, day, hour, minute, second);//time=2013-2-13 14:55:34 //3. %*d和%*s加了(*)表示跳过此数据不读入(也就是不把此数据读入参数中) sscanf("1234abcd","%*d%s",str);//此处表示跳过 %d 的数据,也就是跳过 :1234 printf("%s\n",str);// abcd //4. 取到指定字符为止的字符串。如例子所示,遇到‘+’为止的字符串 sscanf("1234+abc","%[^+]",str); printf("%s\n",str);// 1234 //5. 取到指定字符集为止的字符串。如遇到小写字母为止的字符串。 sscanf("1234+abc1234","%[^a-z]",str); printf("%s\n",str);// 1234+ //6. 取仅包含指定字符集的字符串。(取仅包含数字和小写字母的字符串,是取得连续的字符串)。 sscanf("123456abcdefBFRGTY7890","%[1-9a-z]",str); printf("%s\n",str);// 123456abcdef return 0; }
实际应用:
读取 pclist_info 文件内容 ,90:2b:34:67:2b:43 [192.168.10.111] [] [] [0 1900/01/00 00:00:00] [Wire] [STATIC] [Online] [] [] [Used]
此函数遇到一个问题,当遇到, [] 第一个符号时,里面是空的,后面的就无法获取了
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> typedef struct { char hostClass[8]; char hostMAC[20]; char hostDHCPName[70]; char hostDevName[70]; char hostIP[20]; char hostConnectInterface[8]; char hostOnlineTime[64]; char hostStotageAccessStatus[8]; }CMCCLanHostInfo; int main(void) { FILE *fp = NULL; char line[512] = {0}; int i=0; struct tm timeinfo={0}; CMCCLanHostInfo tmp_lhi={0}; char if_mac[20]={0}; char contype[20]={0}; char conssid[20]={0}; char ip_addressing[20]={0}; char time[128] =""; char *p = NULL; char dest[] = "[]"; if ((fp = fopen("pclist_info", "r")) == NULL) { printf("%s", "Cannot open pclist_info file!\n"); return 0; } if(fgets(line, sizeof(line)-1 , fp) != NULL ) { line[strlen(line)-1] = ‘\0‘; // 90:2b:34:67:2b:43 [192.168.10.111] [0] [1] [0 1900/01/00 00:00:00] [Wire] [STATIC] [Online] sscanf(line, "%[^]%*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]] %*[^[][%[^]]", tmp_lhi.hostMAC, tmp_lhi.hostIP, tmp_lhi.hostDevName, tmp_lhi.hostDHCPName, time, contype, ip_addressing, tmp_lhi.hostClass, tmp_lhi.hostConnectInterface, conssid, tmp_lhi.hostStotageAccessStatus); printf("hostMAC = %s \n",tmp_lhi.hostMAC); printf("hostIP = %s \n",tmp_lhi.hostIP); printf("hostDevName = %s \n",tmp_lhi.hostDevName); printf("hostDHCPName = %s \n",tmp_lhi.hostDHCPName); printf("time = %s \n",time); printf("contype = %s \n",contype); printf("ip_addressing = %s \n",ip_addressing); printf("hostClass = %s \n",tmp_lhi.hostClass); printf("hostConnectInterface = %s \n",tmp_lhi.hostConnectInterface); printf("conssid = %s \n",conssid); printf("hostStotageAccessStatus = %s \n",tmp_lhi.hostStotageAccessStatus); } fclose(fp); return 0; }