我正在尝试文本文件的数据(如下所示),但我不断收到错误的参数
1/1/1990/0/0 774.359070
1/1/1990/0/10 772.973206
1/1/1990/0/20 739.628784
1/1/1990/0/30 680.130066
1/1/1990/0/40 618.887695
我的代码是
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE* input;
FILE* output;
input = fopen(argv[1],"r");
output = fopen(argv[2],"w");
float date;
float value;
while(fscanf(input,"%f/%f/%f/%f/%f/%f\n",&date, &value)!= EOF)
{
}
fprintf(output,"%f\n/%f\n/%f\n/%f\n/%f\n/%f\n",date, value);
return 0;
}
这是我得到的错误
float_search.c: In function 'main':
float_search.c:15:2: warning: too few arguments for format
float_search.c:20:2: warning: too few arguments for format
我做错了什么?
//更新的代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE* input;
FILE* output;
input = fopen(argv[1],"r");
output = fopen(argv[2],"w");
int date1,date2,date3,date4,date5;
float value;
while(fscanf(input,"%d/%d/%d/%d/%d/%f\n",&date1,&date2,&date3,&date4,&date5, &value)!= EOF)
{
fprintf(output,"%d\n/%d\n/%d\n/%d\n/%d\n/%f\n",date1,date2,date3,date4,date5,value);
}
fprintf(output,"%d\n/%d\n/%d\n/%d\n/%d\n/%f\n",date1,date2,date3,date4,date5,value);
return 0;
}
以上是带有更改的更新代码,当打印出来时我得到以下输出
46804
/4196128
/32765
/-1590701960
/0
/0.000000
34501
03
答案 0 :(得分:4)
你有六个格式说明符(%f
)但只给它两个位置来放置它们。做出更多变数。另外,你可能只想要最后一个字段的浮点数;其余的应该是整数。
使用更新后的代码,输出与输入不同的原因是\n
。每个\n
添加一个新行,最后只需要一行。删除除最后一个之外的所有内容。
答案 1 :(得分:0)
您已为6个浮点数输出格式,并且仅输出两个参数。 你可以试试这个:
int main(int argc, char *argv[])
{
FILE* input;
FILE* output;
input = fopen(argv[1],"r");
output = fopen(argv[2],"w");
int date[5];
float value;
while(fscanf(input,"%d/%d/%d/%d/%d %f\n",&date[0],&date[1],&date[2],&date[3],&date[4], &value)!= EOF)
{
}
fprintf(output,"%d\n/%d\n/%d\n/%d\n/%d\n/%f\n",date[0],date[1],date[2],date[3],date[4], value);
return 0;
}