|
fseek()등의 c스타일 함수보다 c++ 스타일로 해보려고 맘먹었었기 때문에
더 삽질을 하게 된거 같으네요..^^:
위치 포인터는 삽질끝에 해결을 봤구요~ ( tellg()로 위치 알아내고 seekp()로 옮기고.. )
지금 제가 제일 어려움을 겪고 있는부분은 다름아닌 쓰기부분인데..
이전문자열이나 바꿀문자열이 길이가 똑같다면 상관없는데, 길거나 짧으면 문제가 생기네요
------------------------------------------------------------------------------------------
/* 포인터 이동 */
outfile.seekp(문자열 해당라인 시작점, ios::beg); // 쓰기 포인터 이동(해당라인 시작점으로)
/* 공백문자 채우기 */
for(i=locp; i < end_locp; i++){
outfile << '\0'; // 쓰기에 앞선 해당 문자열 청소
}
/* 작업 2: 유저 문자열 입력 */
outfile.seekp(문자열 해당라인 시작점, ios::beg); // 쓰기 포인터 재이동(해당라인 시작점으로)
outfile.write(유저 입력 문자열,strlen(유저입력문자열)); // 쓰기
------------------------------------------------------------------------------------------
네... 위와같이 쓰기전에 대상 문자열을 공백문자로 채워놓고 보니, 입력하는 문자의 길이가 작을땐 그나마 되긴하는데, 길이가 긴 경우는 -.- 꼼짝없이 파일의 다른 칸을 침범(?)하게 되는 일이 발생한답니다..
레조님께선 메모리나 임시파일을 이용하라고 하셨는데요,
-.-; 그 방법밖엔 없는것인가요? 이런경우엔??
그..그럼 메모리에 모든 파일내용을 다 집어넣는 사태가 ㅜ.ㅜ ...
다시 한번 답변주심 감사하겠습니닷...
|