1 从buffer里读取file_stream中带标签的数据
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main(void) {
FILE* file_stream = NULL;
errno_t err = fopen_s(&file_stream, "E:\\桌面\\cs.txt", "r");
if (err != 0 || file_stream == NULL) {
perror("file opening failed");
return EXIT_FAILURE;
}
char line[200];
char name[100] = "";
int age = 0;
char gender = 'N';
float num = 0.00f;
while(fgets(line, sizeof(line), file_stream) != NULL)
{
if (strstr(line, "name:") != NULL) {
sscanf_s(line, "name:%s", name, (unsigned)_countof(name));
}
if (strstr(line, "age:") != NULL) {
sscanf_s(line, "age:%d", &age);
}
if (strstr(line, "gender:") != NULL) {
sscanf_s(line, "gender:%c", &gender, 1);
}
if (strstr(line, "num") != NULL) {
sscanf_s(line, "num:%f", &num);
}
}
printf("name:%s\n", name);
printf("age:%d\n", age);
printf("gender:%c\n", gender);
printf("num:%.4f\n", num);
fclose(file_stream);
return 0;
}
2 output:
name:Lily
age:23
gender:G
num:3.1456
3file
4 注意点:
1.sscanf_s中参数的顺序,第二个参数是格式化字符串(char* format)
2.sscanf_s 不支持指定浮点数的小数位数,只需要用 %f 即可