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
[73972] Re:file open 할 때 ..
StarWagon [starwagon] 4601 읽음    2016-11-11 18:39
a.txt가 ANSI 코드로 되어 있고,
2바이트의 16진수 문자  뒤에 구분 문자가 1바이트가 있다는 가정에
아래와 같이 하시면 됩니다.

	// 파일 열기
	FILE *fp=fopen("F:\\a.txt","rb");
	//pz_buffer 크기 확인을 위한 파일 포인터 이동
	fseek(fp,0,SEEK_END);
	int pz_buffer_size=ftell(fp)/3;
	fseek(fp,0,SEEK_SET);


	//pz_buffer 생성
	unsigned char *pz_buffer = new unsigned char[pz_buffer_size];

	//StrToInt 를 사용하기 위해 "0x__ "형태의 버퍼를 만듦
	char *buff = new char[5];
	buff[0]='0';
	buff[1]='x';
	buff[4]=0;//공백 문자


	//2바이트 읽고 1바이트 이동 하면서 buff의 2,3 인덱스에 값을 채우고 buff를 숫자로 변환하면서 루프를 돎
	for (int i = 0; i < pz_buffer_size; i++) {
		fread(&buff[2],sizeof(char),2,fp);
		pz_buffer[i]=StrToInt(buff);
		fseek(fp,sizeof(char),SEEK_CUR);
	}
	fclose(fp);


	//값 확인
	for (int i = 0; i < pz_buffer_size; i++) {
		Memo1->Lines->Add(IntToHex(pz_buffer[i],2));
	}

	delete[] buff;
	delete[] pz_buffer;



또아리 님이 쓰신 글 :
: a. txt 파일이
:
: hex로 되어 있는 데이터 인데 이걸 buffer에 넣고 싶은데 어떻게 해야 할까요?
:
: ex)
: a.txt
: 10 3E 5F 50 ......  
:
:
: -->
: pz_buffer[xx] = {0x10, 0x3E, 0x5F, 0x50.....};

+ -

관련 글 리스트
73969 file open 할 때 .. 또아리 4296 2016/11/11
73972     Re:file open 할 때 .. StarWagon 4601 2016/11/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.