프로그래밍언어/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')가 남아 있어 줄바꿈이 두 번 되거나, 다음 입력에서 문제가 생길 수 있습니다.