파일처리 과제하면서 r+, w+ 모드에 대해 이런게 있다는 것을 넘어서 사용해 보았다.
우선 이 둘의 공통점은 r이나 w처럼 파일을 한가지 모드로 여는게 아니라 읽기 쓰기 둘 다 가능한 모드로 연다는 것이다.
그럼 차이점은?
r+의 경우 파일이 없는 경우 에러를 발생시키지만, w+의 경우 파일이 없는 경우 새로 생성한다는 점이다.
하지만 w+의 경우 기존의 파일이 존재할 경우 그 파일의 내용을 모두 지우기 때문에 기존 파일에 덧붙여서 파일에 쓰고자 할 때 문제가 된다.(참고로 a+모드도 있지만 아직 써보진 않았다.)
r+의 경우 기존의 내용이 있을 경우 기존의 내용을 지우지 않으면서 열기 때문에 기존 내용에 새로운 내용을 추가하거나 할 수 있다.
그렇다면 파일이 존재하지 않는 경우는 파일을 생성하고, 파일이 존재할 경우는 기존의 내용에 덧붙이고자 하는 상황에는?
이때는 이렇게하면 가능하다.
if ((fd = fopen("test.txt", r+)) == NULL)
fd = fopen("test.txt",w+);