c - 从文件中读取以 ';' 分隔的数据

标签 c file parsing

我正在尝试从格式为 ; 的文件中读取数据。 数据永远是这样的:

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/

相关文章:

c - "error: dereferencing pointer to incomplete type"在 c

java - 用户编写的程序如何发送到图书馆?

java - 我应该如何正确计算 JTable 列值中的值?

Php - 读取文件、更改数据、写入新文件

bash - 将变量当作参数来解析?

javascript - Web 应用程序中客户端的文件解析

c - 这种格式化程序是什么意思?

c - 错误 C3861 : 'ls_file' : identifier not found

c++ - 生成的依赖关系问题

c - fprintf 不能在 wireshark 源中工作