C 언어에서 다음과 같은 화일 처리는 어떻게 해야하나요?
글쓴이: yangam / 작성시간: 목, 2004/06/24 - 1:28오전
3.txt 라는 화일이 있습니다.
다음과 같이 3 Line 의 내용이 저장되어 있습니다.
aaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccc
여기서 bbbbbbbbbbbbbbbbbbb 의 내용을
******************* 의 내용으로 바꾸고 싶습니다.
즉, 아래와 같이 되죠.
aaaaaaaaaaaaaaaaaaaaaa
*******************
cccccccccccccccccccccc
조건은.. 임시 화일을 이용하던가 하면 안됩니다.
3.txt 화일 내에서 해결하고 싶습니다.
출력을 하면.. 무조건.. cccccccccccccccccccccc 다음 라인에 붙여져서..
해결을 하지 못하고 있습니다.
어떻게 해야하나요?
그리고 보통 프로그램을 만들 때,
이와 같은 경우에 파일 처리를 어떻게 하나요?
(이와 같은 경우란, 어떤 파일의 특정 부분만을 바꾸고자 하는 경우를 지칭합니다.)
답변 부탁드립니다 ㅎ_ㅎ;
Forums:
화일 처리에 대한 좋은 지침서 없을까요?
온라인 상의 책이라도..;
제가 무지해서 그럴 가능성이 높아보이지만...
왠지.. 제가 갖고 있는 책들은 파일 입출력 부분에서는 비중있게 다루는 것 같지 않네요;
작은 것들, 사소한 것들을 소중히 여기고,
항상 최선을 다하는 멋진 사람이 되고 싶다.
그들이 나에게 일깨워준 것처럼,
그들 자신이 얼마나 소중한 존재인지 알 수 있도록
도와주는 그런 좋은 사람이 되고 싶다
파일 전체를 버퍼링하지 않는 이상은...임시파일을 사용하지 않고 할
파일 전체를 버퍼링하지 않는 이상은...
임시파일을 사용하지 않고 할 수 없을 듯 합니다..
....
아니면.. 정확하게 같은 바이트수만큼만을 딱 고치는 거라면..
"w"옵션만을 주고 fopen을 해서..
해당라인의 위치에.. fseek을 해주고..
fwrite로 해주면 될겁니다..
뒤에 붙는다는거보니.. "a" 옵션을 주고 fopen을 하신듯 하군요..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
음...
정태영님께서 말씀하셨듯이
파일을 포인터 배열에 저장해서 해당 라인의
위치를 알아내고 바뀔 라인에 새로운 데이터를 입력하고
파일을 처음부터 다시 쓰면 되겠네요.
만약 파일 내의 해당 라인을 삭제하는 것이라면
파일 전체 싸이즈를 알아낸 후, 나중에 삭제될 라인의
바이트를 알아내서 truncate();로 파일을 잘라내면
되겠네요.
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
심심해서..
그냥 글 읽어내려가다가 생각지 못한 것이라..함해봣으요..
대충...2~3분에 짠거라...
무쟈게 지저분..-_-;
다 덤벼! 다 받아줄께!!
가장 탐스러운 방법은 file mmap해서b만나면 *로 바꿔주세요
가장 탐스러운 방법은 file mmap해서
b만나면 *로 바꿔주세요.. ^^;
mmap에 대한것은 man mmap하시면 나올듯
스티븐슨 2판 2번째 책에도 있을겁니다.
이번기회에 배워두심 두고두고 좋은 mmap입니다.
나중에 되시면 lseek, read, write보다
mmap사용하시면서 어이 편하다 하실껍니다..^^;
[code:1]#include <stdio.h>#inc
재미로 작성해 봤습니다.
---
http://coolengineer.com
[code:1] *mapsize = (st.st_size
이건 무슨 계산법인가요? ㅎ
“바람에게도 길은 있다. 나는 비로소 나의 길을 가느니. 길은 언제나 어디에나 있다.”
(0 + 4) / 4 * 4 = 4(1 + 4) / 4 * 4 = 4
(0 + 4) / 4 * 4 = 4
(1 + 4) / 4 * 4 = 4
(2 + 4) / 4 * 4 = 4
(3 + 4) / 4 * 4 = 4
(4 + 4) / 4 * 4 = 8
(5 + 4) / 4 * 4 = 8
(6 + 4) / 4 * 4 = 8
(7 + 4) / 4 * 4 = 8
(8 + 4) / 4 * 4 = 12
크면서 가까운 배수를 구하는 식입니다.
---
http://coolengineer.com
역시나...
위에 어느 분께서 쓰셨던 mmap이 가장 좋은 방법이 아닐까요? ㅋ
void main(void)
{
char *brain;
brain = malloc(sizeof(stress));
free(brain);
}
뭐든지 답은 간단한데서 시작한다.
댓글 달기