【发布时间】:2018-06-15 11:03:53
【问题描述】:
我如何阅读这样的文本文件:
Acqua Naturale 200
Coca Cola 100
Bibite 300
并使用 sscanf() 将字符串 Acqua naturale 和 Coca Cola 及其 int 值存储在 int 变量中。
示例代码是这样的:
struct Test
{
char name[16];
int id;
};
char * buffer = malloc(sizeof(struct Test));
while(fgets(buffer, sizeof(struct Test), filep))
{
if(sscanf(buffer, "%s %d", p.name, &p.id) == 2)
{
//do something with data
}
}
【问题讨论】:
-
呃,你分配的数据量太小了。您的结构的大小很可能是 20 字节,如果数字超过四位,这还不够。
-
至于你的字符串问题,
sscanf(and family)格式"%s"读取的是空格分隔字符串。 -
是否应该将
"7-up 100"解析为"7-up"和100?"abc4 123"呢。"xyz456"解析成"xyz"456 是否有效? -
这里有一些关于阅读不可预测的“语法”输入的非常好的(虽然更通用)的建议:sekrit.de/webdocs/c/beginners-guide-away-from-scanf.htmlstackoverflow.com/questions/35178520/…
-
不建议用答案编辑您的问题。如果您想回答自己的问题,请将其放在答案部分,并将其标记为已回答。出于礼貌,事后改变问题的性质以适应您的回答是不好的形式。
标签: c text-files scanf