|
파일을 열 때 여러가지 형식으로 열게 됩니다.
"읽기", "쓰기", "읽기+쓰기" 등...
fopen 함수의 두번째 인자에 이부분을 명시하는데 코드의 "rb" 는 바이너리 읽기로 여는 것입니다.
당연히 쓰기가 안되겠죠.
이부분 한번 찾아보세요.
이호민 님이 쓰신 글 :
:
: </code>
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
: short dataSize = 300000;
: short btSize = 1024;
:
:
: AnsiString fileName = "E:\\SUVAData\\111(NORTH)_CH1.NSWD";
:
:
: double buffer[] = {dataSize*btSize};
:
:
: FILE *Open;
:
: if((Open = fopen(fileName.c_str(), "rb")) == NULL)
: ShowMessage("Can't not open file");
:
: else
: {
: if(fseek(Open, SEEK_SET, 0) == 0)
: {
: fread(buffer, sizeof(short), dataSize*btSize, Open);
:
: FILE *outTextFile = fopen("d:\\Header.txt", "ab");
:
: fwrite(buffer, 2, dataSize, outTextFile);
:
:
: fclose(outTextFile);
: fclose(Open);
: }
: else
: {
: ShowMessage("fseek function failed.");
: }
:
:
: }
:
:
: delete [] buffer;
: }
:
: 소스는 이러합니다. 데이터 파일을 읽어와서 300KB 에 해당하는 데이터만 분할해서 저장하는 소스인데요. 파일 생성은 되지만 내용이 들어오질 않아요 ㅠ
:
: 약간씩 고쳐보면 내용이 글자가 깨져서 나오구요. 위에 소스대로하면 파일만 생성되고 안은 텅 비어있네요 -_-;;
:
: 어디가 잘못된건지 모르겠습니다ㅠ fwrite 말고 fprintf로 해야할까요? 사수께서 만든 소스로보면 fprintf 로 반복적으로 한 라인씩 읽어서 출력하게 하셨던데..
:
: 암 것도 모르는 초짜의 생각으론 한 꺼번에 읽어서 한 번에 쓰는게 빠르고 낫지 않을까...싶어서요.
:
:
: 그리고 한 가지 더 조언부탁드리자면 위에 파일을 읽어오는 부분에서, 사용자가 원하는 파일을 선택하게 하는 방법을 알고 싶습니다!!
:
|