XCode로 파일입출력 공부하기
C언어 기억이 하나도 안 나서 특히 안 나는 부분만 공부하려고 한다. 첫번째 순서는 바로 파일 입출력! 그렇게 어렵지는 않다. 파일을 읽기 위해서는 '파일 포인터’를 사용해야 하는데, 선언하는 방법은 다음과 같다.
FILE *fp;
파일 포인터 선언 끝!
하지만 여기서 *pt
는 null 포인터이다. 초기화를 해 주어야 한다.
fp = fopen("파일명", "모드");
모드는 기본적으로 세 가지가 있다.
-
"r" // 읽기 모드
- 파일이 없을 경우 에러가 발생한다.
-
"w" // 쓰기 모드
- 파일이 없으면 생성한다.
- 파일이 있으면 내용을 덮어씌운다.
-
"a" // 추가 모드
- 파일이 없으면 생성한다.
- 파일이 있으면 맨 뒤에 추가한다.
아무튼, 이렇게 하면 파일 포인터 초기화까지 완료! 이기는 함.
근데 그대로 컴파일하면 아무 일도 일어나지 않는다.
파일의 내용을 printf로 한번 찍어 주는 게 좋을 듯하다 ‘ㅅ’)/
반복문을 사용한다. 파일의 끝은 EOF(end of file)로 판독하면 된다.
1 | while(fscanf(fp, "%d", &data) != EOF) |
int형으로 이루어진 파일을 읽을 것이기 때문에 data는 int형으로 선언했고, 읽어오는 fscanf도 %d로 받았다. 그리고 아주 무난하게 돌렸는데… 파일 포인터인 fp가 null이었다. 두둥.
분명히 소스 코드가 있는 곳에 해당 txt 파일이 존재했는데도 불구, 읽히지 않았다. 이럴 때 답은 뭐? 구글링 ‘ㅅ’!
설마설마 했는데 역시나. 파일 경로를 풀로 적어줘야 하는 것이었다. -ㅅ-…
원래의 내 코드는 다음과 같았다.
아! fopen을 했으면 close도 있겠죠? 파일을 열었으면 꼭 닫아 줍시다!
fclose(fp);
한 줄이면 됩니다!
1 |
|
그리고 변경(최종) 코드는 다음과 같다.
1 |
|
이렇게 간단하게 읽어오기는 정말로 끝! 약 2년만에 C 하려니까 잊어버린 게 너무 많다. 잊지 말아야 할 것들을 차근차근 정리하는 버릇을 들여야겠다. 😄