이번에는 일기장에 내용을 추가하는 부분을 작성해 보겠습니다.
➊ 내용 작성을 안내하는 문구를 추가합니다. 여기에 EXIT를 입력하면 파일을 저장하고 종료한다는 문구도 추가합니다.
➋ 사용자로부터 내용을 입력받는 부분은 scanf()함수로 작성합니다. 입력 내용의 크기를 알 수 없으므로 무한 반복문인 while (1) 문 안에서 실행합니다.
➌ scanf()함수로 입력받은 내용을 사용하려면 변수에 저장해야 합니다. 이를 위해 contents 배열을 main()함수의 변수 선언 부분에 추가합니다. 문자열을 저장하므로 자료형은 char형으로, 크기는 MAX로 선언하고 빈 값으로 초기화합니다.
➍ scanf()함수의 서식 지정자는 %s가 아닌 %[^\n]을 사용합니다. 이는 키보드로 내용을 입력할 때 줄바꿈 문자(\n)가 나오기 전까지 모든 문자열을 지정된 장소에 넣으라는 의미인데, 결국 한 문장씩 저장하겠다는 뜻입니다.
TIP 줄바꿈 문자가 나오기 전까지 모든 문자열을 입력받기 위한 서식 지정자 %[^\n]은 scanf_s()에서는 의도한 대로 동작하지 않아서 이번에는 표준 함수인 scanf()를 사용합니다. 경고 무시 매크로를 정의했기 때문에 scanf()함수를 사용해도 경고가 발생하지 않습니다.
➎ getchar()함수로 버퍼에 남아 있던 줄바꿈 문자를 없앱니다.