首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fscanf:如何读取但不分配逗号?

问fscanf:如何读取但不分配逗号?
EN

Stack Overflow用户
提问于 2019-01-27 01:20:30
回答 1查看 174关注 0票数 0

我有一个C程序,它从.txt文件中读入一个用逗号分隔的值列表,并将这些值赋给变量。我想把第一个值赋给一个字符串,第二个赋值给int,第三个赋值给double,第四个赋值给double。但是,整行被分配给字符串,其余的是垃圾或随机值。我希望能够“跳过”逗号,并读取逗号之间的赋值。最后的双精度数在末尾有一个百分号,所以我使用%%来读取值,至少这是我认为应该做的。

代码语言:javascript
复制
fscanf(text_file, "%s,%d,%lf,%lf%%%[^\n]", title, &count, &size, &percentage);

一个数据点看起来像这样:黄叶,43,4.50,9.00%,但是title的值包含整行,其余的值都是随机的垃圾值。

EN

回答 1

Stack Overflow用户

发布于 2019-01-27 01:25:28

请记住,scanf()不适合用户输入。

不管怎样……"%s"读取逗号(它跳过了空格),试试"%[^,]"。

代码语言:javascript
复制
// assuming
// char title[99];
if (fscanf(f, " %98[^,],%d...", title, ...) != 4) /* error */;
//             ^ skip whitespace

更好的做法是:使用fgets()读取整行内容,然后使用sscanf()进行解析。

代码语言:javascript
复制
char buff[999];
while (fgets(buff, sizeof buff, f)) {
    // parse buff
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54380775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档