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
[9506] Re:Re: alloc 을 사용할려고 하는데요....
Moony [] 1132 읽음    2001-08-01 10:13
음... 씨언어의 기본내용을 많이 잊으신듯 싶군요...

메모리에 관련된 내용은 특히나 포인터를 쓸때 아주 예민한 부분이므로

잊었다 하더라도 다시 리뷰를 하셔야 프로그래밍 하는데 도움이 될 것입니다...

우선 소스상의 약간 수정되면 좋을 부분에 대한 말씀을 드리죠...

파일의 길이를 얻기 위해 fseek으로 파일포인터를 마지막으로 보내고 ftell로 오프셋

값을 얻은후에 fseek으로 다시 원점으로 되돌리셨는데 flength 던가 라는 함수가

있습니다...

그리고 파일을 옮기기 위해 사용하신 다음 문장에서

     while(i <= length)
     {
       ld = fread(buf, strlen(buf)+1, 1, of);
       wd = fwrite(buf, strlen(buf)+1, 1, sf);
       i = i = ld;
     }

이 문장 전에 buf의 메모리를 할당해주셔도 되고 이런 경우 아예 배열로 잡아도

상관없겠죠...

즉, buf = (char *)malloc( 원하는 바이트수 ); 라는 문장을 저 루프문 위에다

써주시면 되겠고 다음 부분을

       ld = fread(buf, strlen(buf)+1, 1, of);
       wd = fwrite(buf, strlen(buf)+1, 1, sf);
       i = i = ld;

이렇게 고쳐야 하겠네요...

       ld = fread(buf, 원하는 바이트수 , 1, of);
       wd = fwrite(buf, 원하는 바이트수 , 1, sf);
       i = i + ld;

참... i 선언하셨을 때 0으로 셋팅해주셔야 겠죠?

다쓰고 난 다음 free(buf); 잊지 마시구요...


수야 님이 쓰신 글 :
: 안녕하세요..
:
: 또.. 꼼지락.수야랍니다 ㅡ.ㅡ
:
: alloc를 사용할려고 하는데요... 어디서 어떻게 사용해야하는지를 모르겠습니다. ㅡ.ㅡ
:
: 고2때 하고 6년지난 지금 한번도 안써봐서 ㅡ.ㅡ
:
: 도무지 기억이 ㅡ.ㅡ ( 흑.. 나이가 ㅠ_ㅠ )
:
: 아래 소스상에 어디에 어떻게 써야하는지좀 알려주세요
:
: : : void __fastcall TForm1::Button1Click(TObject *Sender)
: : : {
: : :   if(OpenDialog1->Execute())
: : :   {
: : :     FILE *of, *sf;
: : :     char *buf;
: : :     long length, i;
: : :     int ld, wd;
: : :     char *Fn;
: : :
: : :     ld = 0;
: : :     wd = 0;
: : :     i = 0;
: : :
: : :     Fn = OpenDialog1->FileName.c_str();
: : :
: : :     if((of = fopen(Fn, "rt")) == NULL)
: : :     {
: : :       ShowMessage("Error Open LoadFile..");
: : :       return;
: : :     }
: : :
: : :     if((sf = fopen("c:\\S.mp3", "wb")) == NULL)
: : :     {
: : :       ShowMessage("Error Open SaveFile..");
: : :       return;
: : :     }
: : :
: : :     fseek(of, 0, SEEK_END);
: : :     length = ftell(of);
: : :     fseek(of, 0, SEEK_SET);
: : :
: : :     while(i <= length)
: : :     {
: : :       ld = fread(buf, strlen(buf)+1, 1, of);
: : :       wd = fwrite(buf, strlen(buf)+1, 1, sf);
: : :       i = i = ld;
: : :     }
: : :
: : :     StatusBar1->SimpleText = "Complite";
: : :
: : :     fclose(of);
: : :     fclose(sf);
: : :   }
: : : }
: : : //---------------------------------------------------------------------------

+ -

관련 글 리스트
9456 fopen 에관한 질문 ㅡ.ㅡ 또........ 수야 1231 2001/07/30
9510     Re:fopen 에관한 질문 ㅡ.ㅡ 또........ <- 되게 고쳐진 소스입니다... 참고하시길... 김민호 1601 2001/08/01
9457     Re:fopen 에관한 질문 ㅡ.ㅡ 또........ Moony 1439 2001/07/30
9503         Re: alloc 을 사용할려고 하는데요.... 수야 1010 2001/08/01
9506             Re:Re: alloc 을 사용할려고 하는데요.... Moony 1132 2001/08/01
9508                 Re:Re:Re: alloc 을 사용할려고 하는데요.... 수야 1142 2001/08/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.