获取下面文件中,第四行,ssid后面引号中的内容0000000,主要思路是采用fgets()函数先获取第四行的字符串,再采用sscanf()函数获取第四行“ ”中的内容或者采用strstr()函数寻找“”的位置。
sscanf函数有很多功能,本文用的它获取两个字符之间字符串的功能。
给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
获取两个“ ”之间的内容,注意“ ”中的“要加转义
sscanf(StrLine,"%*[^\"]\"%[^\"]",dest); //注意转义
文件内容
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="00000000"
psk="00000000"
}
方法一、代码如下
#include <stdio.h>
int main()
{
char filename[] = "qw.cfg"; //文件名
FILE *fp;
char StrLine[50]; //每行最大读取的字符数,可根据实际情况扩大
char dest[50];
int i;
if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!\n");
return 0;
}
for(i = 0; i <4; i++)
{
fgets(StrLine,50,fp); //读取一行
}
printf("%s", StrLine); //输出
sscanf(StrLine,"%*[^\"]\"%[^\"]",dest); //关键行
printf("%s\n", dest);
fclose(fp); //关闭文件
return 0;
}
方法二、代码如下
#include <stdio.h>
#include <string.h>
int main()
{
char filename[] = "qw.cfg"; //文件名
FILE *fp;
char StrLine[50]; //每行最大读取的字符数,可根据实际情况扩大
char *dest;
int i;
if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!\n");
return 0;
}
for(i = 0; i <4; i++)
{
fgets(StrLine,50,fp); //读取一行
}
printf("%s", StrLine); //输出
char *start, *end;
start = strstr(StrLine, "=\"");
start = start + strlen("=\"");
end = strstr(start, "\"");
//printf("%s", end);
//printf("%s", start);
dest = (char*)malloc(end-start); //分配内存,不然segmention fault
memcpy(dest, start, end-start);
printf("%s\n", dest);
free(dest);
fclose(fp); //关闭文件
return 0;
}