-5

テキストファイルのデータ(以下に示す)を取得しようとしていますが、引数が少なすぎるというエラーが発生し続けます

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

4

2 に答える 2

4

6 つの書式指定子 ( %f) がありますが、それらを配置する場所を 2 つしか与えていません。さらに変数を作成します。さらに、おそらく最後のフィールドには float のみが必要です。残りは整数でなければなりません。


更新されたコードでは、出力が入力と同じではない理由はすべてです\n。それぞれ\nが新しい行を追加し、最後に 1 つだけ必要です。最後の 1 つを除いてすべて削除します。

于 2013-03-24T05:31:50.480 に答える
0

6 つの float の形式と 2 つだけの出力パラメーターを配置しました。あなたはこれを試すことができます:

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;
}
于 2013-03-24T05:40:33.337 に答える