我正在尝试从格式为 ;
的文件中读取数据。
数据永远是这样的:
char[];int;int%;int
char[]
可以有任意数量的空格,读取数据时应忽略 %
。
我正在使用 fscanf()
(我只能使用它)从文件中读取数据。
现在我的那部分代码是:
fscanf(file, "%[^;]%d%d%d", f_name, &f_id, &f_score, &f_section_num) != EOF)
是否有满足我需要的正则表达式?或者,如何更正我的 fscanf
?
最佳答案
您可以使用具有以下格式字符串的 fscanf
读取文件:
"%[^;];%d;%d%%;%d"
%[^;]
:读到第一个;
;
:忽略;
%d
: 读取一个整数;
:忽略;
%d
: 读取一秒整数%%
:忽略%
;
:忽略;
%d
: 读取三分之一整数
不要忘记通过测试 fscanf(...) == 4
来测试 fscanf
成功转换的次数
所以代码看起来像:
FILE *f = fopen(...);
char name[64];
int i, integers[3];
while (fscanf(f, "%[^;];%d;%d%%;%d", name, &integers[0], &integers[1], &integers[2]) == 4)
{
printf("name is %s\n", name);
for (i = 0; i < 3; ++i)
{
printf("i[%d] = %d\n", i, integers[i]);
}
}
fclose(f);
关于c - 从文件中读取以 ';' 分隔的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229511/