한국어 Translate to English (by Google) 日本語に翻訳します (by excite.co.jp)       작성자: 게임 프로그래머 Kyuseo의 게임 프로그래밍 이야기 :: http://a.TK.co.kr | 트위터 @kyuseo

Share

개요..

 

1기가바이트 이상의 대용량 텍스트 변경을 fgets 함수로 한다면 로딩 & 변경이 너무 느립니다.

 

대용량 텍스트(Text) 파일의 스트링(string) 검색 & 변경 방법에 대하여 알려드립니다.

 

 

방법

 

A : 원본파일, B : 결과파일

   

1. A 파일을 fread로 1메가씩 문자열 메모리로 로딩

   

2. 로딩된 문자열을 strstr 및 직접 제작한 함수로 찾고 수정

   

3. 수정된 문자열 메모리를 B 파일에 fwrite로 저장

   

4. 1번으로 복귀

   

위와 같은 방법을 사용하면 빠르게 변경이 가능합니다. 

   




트랙백 0 : 댓글 3             (^o^) 트랙백 및 댓글을 부탁드립니다.! (*^-^)♡(^o^*)   한국어 Translate to English (by Google) 日本語に翻訳します (by excite.co.jp)
  1. 정창용
    2008/02/13 18:31
    댓글 주소 수정/삭제 댓글
    0-------1023-----2047
    +--------+--------+
    |------he|llo-----|
    +--------+--------+

    이런 상태로 hello라는 문자열이 걸쳐서 기록된 경우라면 위에서 제시하신
    방법이 정상적으로 동작하기 어려울거라는 생각인데 위와 같은 예외 상황은
    어떤식으로 해결하셨는지 궁금합니다.

    물론 한글의 경우라면 초/중/종성에 대한 정보를 byte단위로 파싱하는것으
    로 비슷한 경우를 해결한 경험이 저는 있는데 영어의 경우에 큐를 변형한
    자료구조로 해결했었는데 다른 좋은 방법이 있으시다면 공유해주시면 감사
    하겠습니다. ^^

    jcy0228[AT]gmail[DOT]com
  2. 2008/02/13 18:43
    댓글 주소 수정/삭제 댓글
    아... 그렇군요 ^^;

    위 방법으로하면 문자열이 걸쳐서 있는경우 재대로 작동이 안되겠네요.

    1. 최초 1메가를 로드하고
    2. 1메가 이전에 공백이나 줄바꿈문자가 있는곳까지만 처리
    3. 처리된 곳부터 다시 로드를

    하는 방법을 반복하면 해결될듯합니다.
  3. 2008/02/13 18:44
    댓글 주소 수정/삭제 댓글
    만일 공백이나 줄바꿈이 없는 파일이라면 또다른 대책을 세워야겠지만 ^^;


트랙백 보낼 주소 :: http://a.tk.co.kr/trackback/267 관련글 쓰기


qrcode
이 글의 QR 코드입니다.


이 저작물은 비영리, 출처:Kyuseo 프로그래밍 이야기 :: http://a.TK.co.kr 표시하면 스크랩 하실 수 있습니다.

별도로 출처 표시가 되지 않은 저작물은 Kyuseo에게 저작권이 있습니다.   ★──━━ 행복한 하루 되세요 ━━──★

BLOG main image
93년부터 프로그래밍을 독학한 게임 프로그래머 kyuseo의 프로그래밍 정보와 게임 개발 강좌를 주로 다룹니다. kyuseo는 최근 아이폰앱 / 스마트폰 올인원 엔진 개발을 위해 큰 노력을 하고 있습니다. by kyuseo

카테고리

분류 전체보기 (664)
Kyuseo 소개, 잡담 (157)
만든 게임 및 프로그램 (117)
게임, 서적, 문화 소감 (32)
틀린그림찾기 서치아이 (9)
-----------★----------- (5)
컴퓨터 활용 팁, 강좌 (98)
개발자 팁, 강좌 (64)
PHP, DB 팁, 강좌 (0)
C++ 팁, 강좌 (116)
프로그래밍 프로젝트A (1)
프로그래밍 프로젝트B (0)
------------------------♥ (0)
클로버 자동 업데이트 (14)
------------------------♣ (0)
스마트폰, 아이폰 개발 (46)
CK 아이폰 게임 엔진 (2)
피망고 게임 엔진 (0)
Statistics Graph
전체 : 2,056,898
오늘 : 714 어제 : 1,301