こんにちは、私の質問は単純に見えますが、テキストファイルから膨大な数を読み取ろうとしていますが、正しく実行できません。
次のファイルの保存を見てくださいfile1.text
私は次のような構造を持っています:
struct PDW_FileFormat
{
float TOA;
float Freq;
float PW;
float PA[10];
float PASlc1;
float PASlc2;
float PAOmni;
float AZ_Angle;
float EL_Angle;
float EST_Az_Angle;
float EST_El_Angle;
float Cdiff;
unsigned int index_in_packet;
};
次のコードのようにファイルを開いて読み取る
PDW_FileFormat filedata;
unsigned index_in_packet=0;
p = fopen("file1.txt" ,"r");
while (!feof(p))
{
memset(&filedata,0,sizeof(PDW_FileFormat));
fscanf(p ,"%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f"
,&filedata.TOA //1
,&filedata.Freq //2
,&filedata.PW //3
,&filedata.PA[0] //4
,&filedata.PA[1] //5
,&filedata.PA[2] //6
,&filedata.PA[3] //7
,&filedata.PA[4] //8
,&filedata.PA[5] //9
,&filedata.PA[6] //10
,&filedata.PA[7] //11
,&filedata.PA[8] //12
,&filedata.PA[9] //13
,&filedata.PASlc1 //14
,&filedata.PASlc2 //15
,&filedata.PAOmni //16
,&filedata.AZ_Angle //17
,&filedata.EL_Angle); //18
filedata.index_in_packet = index_in_packet;
// some code to convert a value like
// 1.386500000000000e+10
// to
// 138650000000000
INT64 TOAConvert;
//**your code or your answer **
index_in_packet++;
}
私はこのコードを試しましたが、うまくいきません。
//filedata.TOA = 1.3865000e+010
INT64 variabletoConvert;
stringstream ss;
ss.setf(ios::fixed);
ss.precision(0);
ss << filedata.TOA;
ss >> variabletoConvert;
// variabletoConvert = 13864999936 i expect 138650000000000
INT64 variabletoConvert2;
variabletoConvert2 = static_cast<INT64>(filedata.TOA);
//variabletoConvert2 = 13864999936 i expect 138650000000000
INT64 variabletoConvert3;
variabletoConvert3 = (INT64)(filedata.TOA);
//variabletoConvert3 = 13864999936 i expect 138650000000000
このデバッグイメージを見てください: