파일 I/O 질문 드립니다.
글쓴이: poplinux / 작성시간: 월, 2009/03/30 - 3:37오후
설정 파일을 다루는 어플을 작성중입니다.
어플이 기동되면 설정 파일을 읽어서 내용을 항목별로 구조체에 채운후 내용을 바꾸고 다시 저장하는 형태입니다.
평소엔 문제가 없는데 설정 파일에 줄바꿈 문자나, 스페이스 등이 들어 있을 경우 구조체로 읽은 내용을 다시 파일에 쓰게 될 경우 쓰레기 값이 파일의 마지막에 남게 됩니다.
예를 들어 다음과 같은 파일이 있을 때
IP="192.168.1.1"
PORT="1000"
저장하면 다음과 같은 형태로 저장됩니다.
IP="192.168.1.1"
PORT="1000"
00"
이와 같은 문제를 해결하려면 파일을 읽어 온후 원본 파일의 내용을 지우고 다시 써야 할 듯 합니다.
step 1. 데이터 읽기
fopen()
read()
fclose()
step 2. 기존 파일 삭제
unlink(파일)
step 3. 파일을 다시 쓰기
fopen()
write()
fclose()
혹시 이런 방식외에 다른 해결 방안이 있을까요?
Forums:
truncate() 함수로 잘라내는건 어떨까요?
chsize(), truncate(), ftruncate() 등의 함수를 사용해서 필요없는 부분(뒷부분)을 잘라낼 수도 있을 것 같습니다.
헌데... 이렇게 잘라내는 방법이 unlink() 에 비해서는 이점이 있긴 하지만,
간혹 OS 의존적인 경우도 있고, deprecated 된 경우도 있어서 그냥 unlink() 함수를 사용해도 무방할 것 같네요.
fp = fopen(file, "r");/*
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기