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
[9508] Re:Re:Re: alloc 을 사용할려고 하는데요....
수야 [sooya23] 1141 읽음    2001-08-01 10:30
으흐흐.. ^^ 우선 감사의 말씀 전합니다. 감똬.~~

^^

넹.. flength라는 함수는 아직 쓰지 않았습니다.

그리고 1바이트 읽어 1바이트 쓰는 방법을 썼는데요..

4바이트씩 읽게해서 해봤는데 용량이 정량보다 초과되서 저장이 되더군요..

4바이트씩 읽어서 원 파일 크기만큼 저장되는 방법은 ?? 알고리즘인가요?

걍 물러바씀미다 ^^ 감솨드리구여.. 즐프하세여 ^^ 아참.. 휴가시랬죠? ^^

좋은 휴가되시길.. 저처럼 비오는날 잡지 않으셨길.. ㅋㅋ ^^;

아~ 날씨 저타~

Moony 님이 쓰신 글 :
: 음... 씨언어의 기본내용을 많이 잊으신듯 싶군요...
:
: 메모리에 관련된 내용은 특히나 포인터를 쓸때 아주 예민한 부분이므로
:
: 잊었다 하더라도 다시 리뷰를 하셔야 프로그래밍 하는데 도움이 될 것입니다...
:
: 우선 소스상의 약간 수정되면 좋을 부분에 대한 말씀을 드리죠...
:
: 파일의 길이를 얻기 위해 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 을 사용할려고 하는데요.... 수야 1141 2001/08/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.