gpt4 book ai didi

C 格式化 i/o fscanf(新手)

转载 作者:行者123 更新时间:2023-12-02 15:26:20 25 4
gpt4 key购买 nike

我有一个文件,其中包含一些数据、一些标题行和一些数据标签。我想提取数据并将其分配给变量。我正在跳过两个标题行(长度未知):

char   buffer[100]; 
fgets(buffer, 100, cp);
fgets(buffer, 100, cp);

数据上的标签读起来像

this datum =0.444
this other =6.666

实际数据总是从第 12 列开始。我正在通过连续的 fscanf 调用阅读这些行

float  x1;
float x2;
char label[11];
fscanf (filename, " %11s %f ", label, x1);
fscanf (filename, " %11s %f ", label, x2);

等等

这是行不通的。我的所有值都为零。

我还收到有关“%f”的编译警告需要“float *”类型的参数,但参数 4 的类型为“double”。

我知道如何在 FORTRAN 中执行此操作,但以前从未编写过 C 程序。谢谢。

最佳答案

(除了 deepmax 建议的更改):

您正在使用说明符 %s,它会读取字符串直到第一个空格,即使您指定了长度 (11)。您正在指定最大长度,但如果它读取一个空格(“this”之后的那个),它仍会提前退出。

我会使用这种格式:

fscanf (filename, " %*[^=]=%f ", &x1);

这意味着:“扫描并丢弃所有字符,直到找到 '=' 字符。然后扫描该字符。然后扫描一个 float 并将其写入 x1。

关于C 格式化 i/o fscanf(新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196080/

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