1

私は現在、学校向けのプロジェクトに取り組んでいますが、問題が発生しました。基本的に、割り当てとは次のとおりです。たとえば、ドットのないe 18.91、n 10.03を含むファイルを取得するため、文字が使用される頻度を示すこれらすべての値(26日)があります。

私がする必要があるのは、これらのファイルをソートするためにfscanfを使用することです。1つには文字が含まれ、もう1つには数値が必要です。私は次のことを試みてきました:

fp2 = fopen("frequencyTable.txt", "r");
if(fp2 != NULL) {
    while (fscanf(fp, "%c %d", &currentLetter[counterTwo], &freqLetter) == 2){
        printf("%c AND %d\n", currentLetter[counterTwo], freqLetter);
        counterTwo++;
    }   
    exit(0);
}

しかし、私が実装しているfscanfに気付いたように、数値の2番目の部分が表示されないため、ドットの右側がdoubleとして表示されるため、ループが停止します。私が見逃しているものはありますか?私が取得する必要があるのは、最初に文字、つまりcurrentLetterであり、次にループを壊して半分の数を取得するのではなく、整数です。

誰かが私に具体的にどこを見るべきかについての手がかりやヒントを持っていますか?前もって感謝します!

4

2 に答える 2

2

%lf次の形式指定子を使用しますdouble

fscanf(fp, "%c %lf", &currentLetter[counterTwo], &freqLetter)
//              ^^
于 2013-02-15T10:09:01.997 に答える
0

e 18.91、n10.03ドットなし

行にfscanf移動し、ポインタでそれを通過し、2番目のスペースをドットに置き換えてから、sscanfその文字列で使用する必要があります。

于 2013-02-15T10:13:36.650 に答える