【问题标题】:While file data with regex而使用正则表达式的文件数据
【发布时间】:2016-07-01 01:07:11
【问题描述】:

我在仅获取常规表达式的文件数据时遇到问题。我只会得到排序后的数据表。

我的档案:

Foods list test.
Check all foods:
1   123456   Food Name 1
2   123457   Food Name 2
3   123458   Food Name 3
4   123459   Food Name 4
5   123460   Food Name 5
blablabla blablabla
...
file foods done

ID\tCOD\t(空间)名称

我的代码:

int id, cod;
char name[64];
FILE *file;
file = fopen("foods.txt", "r")
while(fscanf(file, "(\d+)\t(\d+)\t (.*)", &id, &cod, name) != EOF)
    printf("ID: %d - Code: %d - Name: %s\n", id, cod, nome);

没有正常工作,为什么?你正在进入一个无限循环。

【问题讨论】:

    标签: c regex while-loop


    【解决方案1】:

    scanf 函数不接受正则表达式。它有自己的语法,类似于printf

    试试这个:

    while(fscanf(file, "%d %d %s", &id, &cod, name) == 3)
    

    【讨论】:

    • 如何使用正则表达式?
    • 应该是&cod,而不是%cod
    • @LouFranco 我有行,例如5 123460 Food5 Good,如何获得 3 个元素? id、鳕鱼、食物名称
    • 你不能用 fscanf 真正做到这一点,因为它会在空格上中断。最简单的做法是编写您自己的解析函数来执行此操作并传入该行。
    • @LouFranco 谢谢。固定。
    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多