1

fscanf を使用してテキスト ファイルの一部を読み取る際に問題が発生しています。問題は、行末の直前の文字でのみ発生します。

私が読んでいるテキストファイルの形式は次のとおりです。

38 59 26.21 北緯 76 56 24.20 西経 ...

コードで行う必要があるのは、値を読み取り、それらをラジアンに変換してから、符号を調整する必要があるかどうかを判断することです (「W」の場合は負にする必要があります)。

    for ( int i = 0; i < 10; i ++) {

    // accepts one line of coordinates at a time from the text file
    fscanf_s(f, "%lf %lf %lf %s\n", &deg, &min, &sec, coordinate);

    printf("%s\n", coordinate);

    // converting into radians
    val = (deg*(pi/180)) + ((min/60) * (pi/180)) + ((sec/3600) * (pi/180));

    // checking coordinate to decide whether or not to change the sign
    if ((strcmp(coordinate, "S") == 0) || (strcmp(coordinate, "W") == 0))
    {
        val = val*-1;
    }

    // are dealing with
    if (EVEN(i)) 
    {
        lat[count1][0] = val;
        count1++;
    }
    else 
    {
        lon[count2][0] = val;
        count2++;
    }
}

これまでのところ、このコードはテキスト ファイル内の浮動小数点数を読み取ってラジアンに変換する際に完全に機能しますが、何らかの理由で行末に文字を格納していません。

私はすべてを見てきましたが、なぜこれが当てはまるのかわかりません。

ご協力ありがとうございました!

4

0 に答える 0