더북(TheBook)

이번에는 일기장에 내용을 추가하는 부분을 작성해 보겠습니다.

내용 작성을 안내하는 문구를 추가합니다. 여기에 EXIT를 입력하면 파일을 저장하고 종료한다는 문구도 추가합니다.

사용자로부터 내용을 입력받는 부분은 scanf()함수로 작성합니다. 입력 내용의 크기를 알 수 없으므로 무한 반복문인 while (1) 문 안에서 실행합니다.

scanf()함수로 입력받은 내용을 사용하려면 변수에 저장해야 합니다. 이를 위해 contents 배열을 main()함수의 변수 선언 부분에 추가합니다. 문자열을 저장하므로 자료형은 char형으로, 크기는 MAX로 선언하고 빈 값으로 초기화합니다.

scanf()함수의 서식 지정자는 %s가 아닌 %[^\n]을 사용합니다. 이는 키보드로 내용을 입력할 때 줄바꿈 문자(\n)가 나오기 전까지 모든 문자열을 지정된 장소에 넣으라는 의미인데, 결국 한 문장씩 저장하겠다는 뜻입니다.

TIP     줄바꿈 문자가 나오기 전까지 모든 문자열을 입력받기 위한 서식 지정자 %[^\n]scanf_s()에서는 의도한 대로 동작하지 않아서 이번에는 표준 함수인 scanf()를 사용합니다. 경고 무시 매크로를 정의했기 때문에 scanf()함수를 사용해도 경고가 발생하지 않습니다.

getchar()함수로 버퍼에 남아 있던 줄바꿈 문자를 없앱니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.