프로그래밍언어/C언어[초급]

[C언어][초급] Chapter45. 문자열 입력과 출력 – 사용자와 소통하는 가장 기본적인 방법

about_IT 2025. 4. 18. 20:10

사용자에게서 이름, 주소, 메시지 등을 입력받고 출력하는 것은 모든 프로그램의 기본입니다.
C언어에서는 문자열을 입력하고 출력하는 데 다양한 방법이 있지만, 주의할 점도 많습니다.


● 문자열 입력: scanf 함수

char name[20];
scanf("%s", name);

공백 이전까지만 입력받습니다. 예를 들어 "Kim Jihoon"이라고 입력하면 "Kim"까지만 저장됩니다.


● 문자열 입력: fgets 함수

char line[100];
fgets(line, sizeof(line), stdin);

fgets는 한 줄 전체를 입력받을 수 있습니다. 공백 포함 문자열 입력에 적합하며, 보안상 scanf보다 안전합니다.


● 문자열 출력: printf

printf("이름: %s\n", name);

%s 서식 지정자를 사용해 문자열 전체를 출력할 수 있습니다.


● 문자열 출력: puts 함수

puts(name);

puts는 문자열을 출력하고 자동으로 줄바꿈까지 해줍니다.


● 문자열 입력 시 주의사항

  • 배열 크기를 넘는 입력은 오류를 발생시킬 수 있습니다.
  • scanf는 공백을 기준으로 끊기 때문에, 전체 문장은 fgets 사용 권장
  • fgets는 개행 문자('\n')를 함께 저장하므로 출력 시 주의

입력과 출력을 제대로 다루는 것은 사용자와 프로그램이 소통하는 기본입니다.
문자열을 정확하고 안전하게 다루는 습관을 들여야 합니다.


● 실습 문제

문제 1

이름을 입력받아 그대로 출력하는 코드를 작성하세요. (scanf 사용)

 

문제 2

한 문장을 입력받고 그대로 출력하는 코드를 작성하세요. (fgets 사용)

 

문제 3

puts 함수를 사용해 문자열을 출력하는 예제를 작성하세요.

 

문제 4

scanf와 fgets의 차이점을 간단히 설명하세요.

 

문제 5

fgets를 사용할 때 개행 문자를 제거하지 않으면 어떤 일이 생기나요?



















































▶ 정답 확인하기

정답 1

char name[20];
scanf("%s", name);
printf("이름: %s\n", name);

 

정답 2

char sentence[100];
fgets(sentence, sizeof(sentence), stdin);
printf("입력한 문장: %s", sentence);

 

정답 3

char word[] = "Hello, C!";
puts(word);

 

정답 4

scanf는 공백 전까지만 입력받고, fgets는 공백 포함 전체 한 줄을 입력받습니다.

 

정답 5

개행 문자('\n')가 남아 있어 줄바꿈이 두 번 되거나, 다음 입력에서 문제가 생길 수 있습니다.