C 언어에서 문자열(string)이란 문자들이 배열 형태로 모여 있는 것, 즉 문자 배열(character array)을 의미합니다. 이번 글에서는 C 언어에서 문자열을 입력하고 출력하는 다양한 방법을 예제 코드와 함께 자세히 알아보겠습니다.
1. scanf( )와 printf( )를 이용한 문자열 입출력
가장 기본적인 방법은 표준 입출력 함수인 scanf()와 printf()를 사용하는 것입니다. 서식 지정자 %s를 활용하면 문자열을 손쉽게 처리할 수 있습니다.
예제 코드
#include<stdio.h>
main ( ){
char a[30];
printf("enter your name");
scanf ( "%s",a);
printf ("your name is %s",a);
getch ( );
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
1. Enter your name : Lucky 2. Enter your name : Lucky Lol Your name is Lucky Your name is Lucky
주요 특징 및 주의사항
'&' 연산자를 사용하지 않습니다. 일반 변수와 달리 문자열에서는 배열 이름 자체가 곧 문자열의 시작 주소(base address)를 나타내기 때문에 주소 연산자 '&'가 필요 없습니다.
공백은 입력받지 못합니다.
scanf()는 공백(space)을 하나의 문자로 인식하지 않으므로, 'Lucky Lol'처럼 공백이 포함된 문자열을 입력하면 공백 앞부분인 'Lucky'만 저장됩니다.널 문자('\0') 자동 추가. 컴파일러가 문자열의 끝을 표시하기 위해 마지막에 자동으로 널 문자 '\0'을 삽입합니다.
2. gets( )와 puts( )를 이용한 문자열 입출력
공백이 포함된 문자열까지 온전하게 입력받으려면 gets()와 puts() 함수를 사용하는 것이 좋습니다.
예제 코드
#include<stdio.h>
main ( ){
char a[30];
printf ( "enter your name");
gets (a);
printf("Your name is");
puts (a);
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
1. Enter your Name : Lucky 2) Enter your name : Lucky Lol Your name is Lucky Your name is Lucky Lol
주요 특징
gets()는 공백도 하나의 문자로 인식하여 입력받습니다. 따라서 'Lucky Lol'과 같이 띄어쓰기가 포함된 전체 문자열이 그대로 저장됩니다.puts()는 문자열을 출력한 후 자동으로 줄바꿈을 수행합니다.
마무리
정리하면, 공백 없는 단순한 문자열 입력에는 scanf("%s")를, 공백을 포함한 한 줄 전체를 입력받을 때는 gets()를 사용하는 것이 적합합니다. 다만 실무 환경에서는 gets()가 버퍼 오버플로우 위험이 있어 표준에서 제거되었으므로, 안전한 대안으로 fgets() 사용을 권장합니다. 각 함수의 특성을 잘 이해하고 상황에 맞게 활용하시기 바랍니다.