Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 문자열 입력과 출력하는 방법 총정리

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() 사용을 권장합니다. 각 함수의 특성을 잘 이해하고 상황에 맞게 활용하시기 바랍니다.