|
소스에서 심각한 문제만 지적하겠습니다.
: short *d;
: float *f;
<-- 여기서 포인터로 선언하셨기 때문에 현재는 쓰레기 주소를 가리키고 있습니다.
:
: if(this->OpenDialog1->Execute())
: {
: stream = fopen(this->OpenDialog1->FileName.c_str(), "r");
: fList->LoadFromFile(this->OpenDialog1->FileName);
: }
:
: AnsiString strC;
: /* READ some data to the file */
: while( 0 < fscanf(stream, "%f %d\n", &f, &d) )
<---- 포인터로 선언된 변수를 또 포인터 주소를 붙여서 포인터의 포인터를 scanf로 넘기고 있습니다.
프로그램이 안죽었다면 다행입니다. ^^;;
: {
: strC.printf("%f",f); //여기 부분이 0.000000 값만 출력이 되서 이유를 모르겠습니다.
<--- 당연히 제대로 나올리 없습니다.
: fList->Add(strC);
수정한다면....
대충 이런식이 될겁니다.
int d ;
float f;
fscanf("%f %d", &d, &f)
.... printf("%f", f)
테스트해본것이 아니기 때문에 문제는 발생할 수 있습니다.
물론 제가 코딩한다면 이런 구조로 만들지는 않을겁니다.
데이터 크기가 고정된 파일이라면 그냥 잘라서 변환해도 될 것 같고요..
개발 일을 계속 하실거고 열심히 하실 생각이 있다면..
C언어를 처음부터 제대로 잘 공부하신다음 코딩 하셨으면 합니다.
지금 포인터를 사용하신 것을 보니 기초가 부족해 보여서
충고 한마디 드리는것이니 기분 나빠 하시지는 마시길 ^^
구윤태 님이 쓰신 글 :
: [test.txt]
:
: 0.000000 -25
: 0.025000 -26
: 0.050000 -27
: 0.075000 -23
: 0.100000 -26
: 0.125000 -25
: 0.150000 -24
: 0.175000 -25
: 0.200000 -26
: 0.225000 -23
: 0.250000 -24
: 0.275000 -24
: 0.300000 -24
:
: ...
: 위의 파일에서 0.xxxxx -yy
: 두개의 값이 스페이스 한칸 떨어져 있는데요
: 이것을 분리해서 아래처럼 차트에 넣으려 합니다.
: 아래처럼 했는데 잘안되서 혹시 쉬운 방법있으면 알려주세요
:
: FILE *stream;
: TStringList *fList = new TStringList();
: TStringList *fList2 = new TStringList();
:
: short *d;
: float *f;
:
: if(this->OpenDialog1->Execute())
: {
: stream = fopen(this->OpenDialog1->FileName.c_str(), "r");
: fList->LoadFromFile(this->OpenDialog1->FileName);
: }
:
: AnsiString strC;
: /* READ some data to the file */
: while( 0 < fscanf(stream, "%f %d\n", &f, &d) )
: {
: strC.printf("%f",f); //여기 부분이 0.000000 값만 출력이 되서 이유를 모르겠습니다.
: fList->Add(strC);
:
: strC.printf("%d",d);
: fList2->Add(strC);
:
: }
: fclose(stream);
:
:
:
: for( int i=0; i<fList->Count; i++ )
: {
: strX = fList->Strings[i];
: strY = fList2->Strings[i];
:
: Chart1->Series[0]->AddXY( StrToFloat(strX),StrToFloat(strY),"",clTeeColor);
: }
:
:
: delete fList;
: delete fList2;
|