プロジェクトの C++ ソースの 1 つにばかげたバグがあります。ソース I/O 操作のこの部分で行います。fscanf の読み取り値を出力する愚かなバグがあります。この部分の下: まず、適切な値を読み取らず、float 値を出力すると、ポイント '.' の代わりにコンマ ',' を使用して 10 進数値が取得されます。整数部分と浮動部分の間。
FILE* file3;
file3=fopen("test.dat","r");
float test1;
fscanf(file3," %f ",&test1);
printf("here %f\n",test1);
float test3 = 1.2345;
printf("here %f\n",test3);
fclose(file3);
test.dat
ファイルには「1.1234」が含まれており、実行時に取得します:
here 1,000000
here 1,234500
そこで、 g++ でコンパイルされた簡単なテスト C プログラムを実行しました。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* file3;
float test3;
file3=fopen("test.dat","r");
fscanf(file3,"%f",&test3);
printf("here %f\n",test3);
fclose(file3);
}
そしてそれは与えます:
here 1.123400
こんなバグは初めてです。誰が何が悪いのか見ることができますか?