c - 读取以';'分隔的数据 从文件
问题描述
我正在尝试从格式为;
. 数据将永远是这样的:
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
次数fscanf(...) == 4
所以代码看起来像:
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);
推荐阅读
- sms - 如何为 Twilio SMS 设置时区?
- javascript - 在 reducer 中更新数组项
- typescript - 我们应该如何在 Typescript 中使用猫鼬?
- powershell - Start-AzureStorageBlobCopy :远程服务器返回错误:(409)冲突。HTTP 状态码:当前有一个挂起的复制操作
- laravel - 如何在 yajra 数据表中设置编辑路径
- javascript - 按 ID 将博文插入集合
- go - 不能在赋值中使用 (type string) 作为类型 func()
- jquery - 猫头鹰轮播“is-transitioned”类仅在初始化后从第二个图像添加,但在第一个图像的循环后工作
- kubernetes - 使用“kubectl”创建资源(cronjob)样板
- javascript - 如何在 googlemaps 上有多个具有不同信息窗口的标记