C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55914] 고맙습니다.
구윤태 [] 931 읽음    2009-01-28 13:36
크레브 님이 쓰신 글 :
: 소스에서 심각한 문제만 지적하겠습니다.
:
:
: :   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;

+ -

관련 글 리스트
55912 TStringList 읽어 오는 것좀 알려주세요 구윤태 1214 2009/01/28
55913     Re:TStringList 읽어 오는 것좀 알려주세요 크레브 1483 2009/01/28
55914         고맙습니다. 구윤태 931 2009/01/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.