.dat 파일이 계속 업데이트되고 있습니다. 파일의 최신 줄에서 데이터를 가져 오려고합니다. 그러나 나는 부정확 한 결과를 얻는다. 여기에 MYFILE.DAT입니다 :fseek 및 fscan은 C++에서 .DAT 파일의 잘못된 결과를 나타냅니다.
# Time forces(pressure, viscous) moment(pressure, viscous)
0.005 (((2 10 4) (3 6 0)) ((12 60 -13) (4.88 0.5 -0.32)))
0.01 (((2 20 2) (4 7 3)) ((0.0024 1 -70) (40 6000 -1200)))
그리고 여기에 C++ 코드 :
Here is f_total = 0 N
은 분명히 잘못 여기
#include <iostream>
#include <fstream>
#include <string>
int main()
{
FILE * force;
force = fopen("file.dat", "r");
float timestep;
float fxp;
float fyp;
float fzp;
float fxv;
float fyv;
float fzv;
float mxp;
float myp;
float mzp;
float mxv;
float myv;
float mzv;
char c;
fseek(force,-285,SEEK_END);
while(c != '\n')
{
c = fgetc(force);
}
fscanf(force, "%f ((%f %f %f) (%f %f %f)) ((%f %f %f) (%f %f %f))", ×tep, &fxp, &fyp, &fzp, &fxv, &fyv, &fzv, &mxp, &myp, &mzp, &mxv, &myv, &mzv);
fclose(force);
float ftotal = fxp + fxv;
std::cout << "Here is f_total = " << ftotal << " N" << std::endl;
return 0;
}
그리고 결과입니다.
"%f ((%f %f %f) (%f %f %f)) ((%f %f %f) (%f %f %f))"
하지만해야한다 :
"%f (((%f %f %f) (%f %f %f)) ((%f %f %f) (%f %f %f)))"
편집 :이 가장 가능성이되지는 2 + 4 = 6
파일의 "최신 행"은 무엇입니까? 지속적으로 업데이트되고 있습니까? –
Funny'#include'그리고 당신은'std :: * fstream' 클래스를 사용하지 않습니다. –
WhiZTiM
파일을 읽을 때 파일이 쓰여지고 있다면, 마지막 줄은 완성되지 않았을 것입니다. 그것의 일부가 완충되었다. – Barmar