write함수로 저장시 바이너리 모드와 텍스트 모드 차이점은?
글쓴이: jungjury / 작성시간: 금, 2005/05/13 - 7:46오후
파일에 가변적인 길이의 숫자와 문자데이터 묶음을 여러개 저장해야 하는데..
바이너리 형태(모드)로 저장하려면 아래처럼 하면 되는건지요..
fwrite ( &숫자변수명 , sizeof(int), 1 , 파일스트림);
fwrite ( &문자변수명 , sizeof(char), 문자갯수 , 파일스트림);
sprintf함수로 buf에 복사후 write함수로 버퍼사이즈 만큼
파일에 쓰는것도 바이너리 형태로 저장하는 건가요?
Forums:
Unix 에서는 파일 open 시 TEXT/BINARY 모드의 구분이 없
Unix 에서는 파일 open 시 TEXT/BINARY 모드의 구분이 없습니다.
(O_TEXT 와 O_BINARY 플래그는 정의되어 있지만, 의미가 없습니다)
글에 적어놓으신대로 write 를 호출하게 되면
int 타입의 숫자변수의 경우에는 메모리에 들어있는 그대로 기록되게 됩니다.
즉, 사람이 읽을 수 없는 형태로 기록되죠.
[quote="kslee80"]글에 적어놓으신대로 write 를 호출하게
이 설명은 텍스트 모드와 이진 모드의 차이가 아니라 formatted와 unformatted
입출력의 차이를 말씀하신 것입니다. 일반적으로 텍스트 모드에서는 formatted를,
이진 모드에서 unformatted를 쓰긴 합니다만.
sprintf()가 하는 일은 예를 들어 123이라는 값을 갖고 있는 int형 변수의 비트열 패턴을
"123"이라는 문자열로 바꿔주는 것과 같습니다. 따라서 sprintf()를 한 후 fwrite()를
쓸 이유는 없지요.
텍스트 모드와 이진 모드의 차이에 대해서는 다음 글을 참고하십시오.
http://bbs.kldp.org/viewtopic.php?p=168186&highlight=#168186
개행문자'\n''만 입력안되게 데이터형 크기대로 저장하는것이 바이
개행문자'\n''만 입력안되게 데이터형 크기대로 저장하는것이
바이너리 모드... 제가 제대로 이해한건가요?
안녕하세요 : )
댓글 달기