gpt4 book ai didi

c - 当我从 C 文件中读取数字时,为什么会收到忽略返回值 ‘fscanf’ 的警告?

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:03 33 4
gpt4 key购买 nike

我想从文件 (.txt) 中读取 C 中的两列。这是代码:

#include<stdio.h>

int main(int argc, char *argv[]){

FILE *f;
int t[160], i, k=0;
double omega[160];

f = fopen("data.txt", "r");

while(!feof(f)){
fscanf(f, "%d %lf", t, omega);
k++;
}

for (i = 0; i < k; i++) printf("%d %lf\n", t[i], omega[i]);

return 0;
}

当我编译程序时,我收到以下错误消息:

average.c: In function ‘main’:
average.c:14:10: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]
fscanf(f, "%d %lf", t, omega);
^

我该如何处理这个问题?任何帮助,将不胜感激 !谢谢!

一个

最佳答案

好吧,我猜是通过不忽略返回值。

请注意 fscanf()(如 scanf()sscanf())返回成功转换的次数。这非常有用,您可以知道您的变量确实包含读入数据。

如果您真的想要忽略该值,请将调用转换为(void):

(void) fscanf(f, "%d%lf", t, omega);

但是您的代码组织得很奇怪;不需要内部的 fscanf() 调用,应该将其删除,并且第一个调用有错误的参数。

循环应该是:

while(fscanf(f, "%d %lf", t + k, omega + k) == 2)
{
k++;
}

在这里,我使用 t + k 作为编写 &t[k] 的较短方式(与 omega 相同)。

您应该像在编辑的问题中那样使用feof():那是错误的。 feof() 的使用是 读取失败后,以确定它是否可能因为输入文件结束而失败。无需像您一样使用它,fscanf() 将失败,因此在文件末尾返回 2 以外的内容。

关于c - 当我从 C 文件中读取数字时,为什么会收到忽略返回值 ‘fscanf’ 的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201365/

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