我想从文件(.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)
我该如何处理这个问题?任何帮助,将不胜感激 !谢谢!
一个
好吧,不要忽视返回值,我猜.
请注意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
| 归档时间: |
|
| 查看次数: |
4565 次 |
| 最近记录: |