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

1 c file

我想从文件(.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;
}
Run Code Online (Sandbox Code Playgroud)

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

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);
          ^
Run Code Online (Sandbox Code Playgroud)

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

一个

unw*_*ind 6

好吧,不要忽视返回值,我猜.

请注意fscanf()(喜欢scanf()sscanf())返回它所做的成功转换次数.这非常有用,因此您可以知道您的变量确实包含读入数据.

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

(void) fscanf(f, "%d%lf", t, omega);
Run Code Online (Sandbox Code Playgroud)

但是你的代码组织奇特; 内部fscanf()调用不是必需的,应该删除,第一个调用错误.

循环应该是:

while(fscanf(f, "%d %lf", t + k, omega + k) == 2)
{
   k++; 
}
Run Code Online (Sandbox Code Playgroud)

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

你应该使用feof()像你在编辑的问题做:这是绝对错误的. 读取失败使用feof()is ,以确定它是否可能因输入文件结束而失败.没有必要像你那样使用它,会失败,从而在文件末尾返回其他内容.fscanf()2