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
[9510] Re:fopen 에관한 질문 ㅡ.ㅡ 또........ <- 되게 고쳐진 소스입니다... 참고하시길...
김민호 [xho95] 1601 읽음    2001-08-01 10:40
안녕하세요...

우선 여기서는 rb로 해도 상관이 없었습니다... 아무래도... rb가 아닌 다른곳의 문제였던것 같군요...

그리고 한 바이트씩 읽어서 쓰는 거니까 당연히 sizeof(char) 이렇게 했구요... sizeof(buf) 하면 포인터니까... 4바이트가 되지 않을까요...?

ld의 값은 한 바이트이니까... 역시 '1'이 되어 그냥 i++ 로 되었습니다.

while 문의 조건은 i < length 이고요...

그 외에는 고쳐진 부분은 없을 겁니다... 제가 직접 해 봐서 됐으니 별 이상이 없을 겁니다. 

아... char *buf = new char; 이건... 아마 그냥 char 만 사용하므로 그냥 ... char *buf; 라 해도 될 듯 합니다... (저도 뒤에 delete 를 해주지 않았는데.. 해주는 게 났겠네요...^^)

참고로... rt로 열어서 wb로 저장하니까... 포맷이 달라지는 것 같은데요... 반드시 rb -> wb 가 되어야 원하는 결과가 나올 것 같습니다...

그럼... 즐넷하세요...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if(OpenDialog1->Execute())
  {
     FILE *of, *sf;

     char *buf = new char;
     char *Fn;
     long length;

     int i = 0;
     int ld = 0;
     int wd = 0;

     Fn = OpenDialog1->FileName.c_str();

     if((of = fopen(Fn, "rb")) == NULL)
     {
        ShowMessage("Error Open LoadFile..");
        return;
     }

     fseek(of, 0, SEEK_END);
     length = ftell(of);
     fseek(of, 0, SEEK_SET);

     if((sf = fopen("d:\\S.mp3", "wb")) == NULL)
     {
        ShowMessage("Error Open SaveFile..");
        return;
     }

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

     StatusBar1->SimpleText = "Complite";

     fclose(of);
     fclose(sf);
  }
}

그럼... 즐넷하세요...

수야 님이 쓰신 글 :
: 안녕하세요
:
: 허접질의 대명사 수야랍니다. ㅡㅡv
:
: fopen에 관한 질문인데요
:
: 일기전용 바이너리 파일로 오픈을 할려고 하는데 ab, a+b, rb, r+b, b 등 여러형식으로 해봤지만
:
: 오픈 에러가 납니다.
:
: rb는 오픈에러는 안나지만 fread때 CC3어쩌구저쩌구.DLL 이 어쩌구하는 멧시지가 뜹니다
:
: 소스 올릴테니까 이유점 알려주세요..
:
: 파일을 읽어서 *buf단위로 s.mp3라는 파일로 저장하는 것인데요..
:
: fopen같은 f시리즈로 무리가 있다면 open같은 다른 방법좀 부탁드립니다.
:
: stdio.h / string.h include했구요
:
: 아래는 소스입니다.
:
: 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 에관한 질문 ㅡ.ㅡ 또........ 수야 1232 2001/07/30
9510     Re:fopen 에관한 질문 ㅡ.ㅡ 또........ <- 되게 고쳐진 소스입니다... 참고하시길... 김민호 1601 2001/08/01
9457     Re:fopen 에관한 질문 ㅡ.ㅡ 또........ Moony 1440 2001/07/30
9503         Re: alloc 을 사용할려고 하는데요.... 수야 1010 2001/08/01
9506             Re:Re: alloc 을 사용할려고 하는데요.... Moony 1133 2001/08/01
9508                 Re:Re:Re: alloc 을 사용할려고 하는데요.... 수야 1142 2001/08/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.