gpt4 book ai didi

c - fscanf : how to read but not assign commas?

转载 作者:行者123 更新时间:2023-11-30 14:42:34 25 4
gpt4 key购买 nike

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

fscanf(text_file, "%s,%d,%lf,%lf%%%[^\n]", title, &count, &size, &percentage);

数据点如下所示:黄叶,43,4.50,9.00%但是 title 的值包含整行,其余的值只是随机垃圾值。

最佳答案

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

无论如何... "%s" 读取逗号(它会跳过空格),尝试 "%[^,]"

// assuming
// char title[99];
if (fscanf(f, " %98[^,],%d...", title, ...) != 4) /* error */;
// ^ skip whitespace

更好的是:使用 fgets() 读取整行,然后解析它,可能使用 sscanf()

char buff[999];
while (fgets(buff, sizeof buff, f)) {
// parse buff
}

关于c - fscanf : how to read but not assign commas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com