본문 바로가기
Coding/C

C언어 - 문자열 (string) 입력

by ZaRi 2023. 5. 16.

 

 배열을 배웠으니 이제 문자열에 대해 알아보겠습니다.

 아마 제가 활용하기 하면서 문자열을 입력 받은 적이 없을 것입니다.

 C언어는 파이썬과 다르게 문자열을 입력 받으려면 우선적으로 char 배열을 선언해줘야 하기 때문입니다.

 


 

문자열 (string)

먼저 문자열을 만들기 위한 형태는 다음과 같습니다.

 

 

형태 ex)
char 배열명[배열 공간 숫자]; char word[5];

 

이를 이용하면 이제 문자열을 입력 받을 수 있게 됩니다.

다음 코드를 봐보겠습니다.

 

#include <stdio.h>

int main()
{
    char word[8];

    printf("코인명: ");
    for (int i = 0; i < 8; i++)
    {
        scanf("%c", &word[i]);
    }

    printf("입력한 코인: ");
    for (int i = 0; i < 8; i++)
    {
        printf("%c", word[i]);
    }

    return 0;
}

 

 위의 코드는 반복문을 이용해 word 라는 char 배열에 값을 하나하나 입력 받아 문자열을 사용할 수 있게 만들어주고 있습니다.

 그러면 Ethereum(8글자) 를 입력해서 출력해보겠습니다.

 

 

 

코인명:에-Ethereum이-입력되고-입력한-코인-에서-Ethereum이-출력됨
출력1

 

 잘 출력되는 것을 확인 할 수 있었습니다.

 사실 이렇게 반복문을 써가면서 입력 받고 출력할 필요는 없습니다.

 

 

 

문자열 입력

 문자열의 입력 방법에 대해 더 자세히 말씀 드리겠습니다.

 

 

문자열 설명
char 배열명[원하는 글자개수+1];
scanf("%s", 배열명);
printf("%s", 배열명);
-배열명에 인덱스 값이 안 들어간다.
-원하는 글자개수+1 <- null 값까지 공간 확보
-scanf함수에서 배열명 앞에 &가 들어가지 않아도 된다.(이미 주소를 가지고 있기 때문)
NULL 값 문자열의 끝을 알림
종료: 0, '\0', NULL

 

 위와 같이 입력 받고 출력이 가능합니다.

 또한 문자열도 배열이기에 초기화도 가능합니다.

 

 

초기화 형식 설명
ex)
char word[6] = {'a','b','c','d','e'}
char word[6] = "a,b,c,d,e"
 
char word[6] = "" NULL 값으로 초기화

 

이런 방식으로 초기화가 가능합니다.

그럼 이제 아까 for문으로 어렵게 문자열을 구했던 코드를 변형해보겠습니다.

 

 

 

#include <stdio.h>

int main()
{
    char word[9];

    printf("코인명: ");
    scanf("%s", word);

    printf("입력한 코인: ");
    printf("%s", word);

    return 0;
}

 

 아까보다 많이 간결해졌습니다. 

 그럼 결과도 똑같이 나오는 지 확인해보겠습니다.

 

 

 

코인명:에-Ethereum이-입력되고-입력한-코인-에서-Ethereum이-출력됨
출력2

 

이렇게 똑같이 잘 출력 되는 것을 확인할 수 있었습니다.

 

그러면 한번 4번째 자리를 NULL로 바꾸어보겠습니다.

 

 

 

#include <stdio.h>

int main()
{
    char word[9];

    printf("코인명: ");
    scanf("%s", word);

    word[4] = NULL;

    printf("입력한 코인: ");
    printf("%s", word);

    return 0;
}

 

그럼 어디까지 출력되는 지 확인해보겠습니다.

 

 

 

코인명:에-Ethereum이-입력되고-입력한-코인-에서-Ethe이-출력됨
출력3

 

Null 때문에 Ethe까지 출력되는 것을 확인할 수 있었습니다.

 

또한 값을 바꾸게 되면 NULL이 사라져서 종종 이상한 문자가 출력되는 경우가 있습니다.

그럴 때는 그 문자열을 NULL문자로 초기화를 하고 사용하면 해결됩니다.

 


 

오늘 문자열에 대해 알아보았습니다.

확실히 파이썬과는 달라서 파이썬 때 문자를 입력 받고 출력 하는 게 많이 쉬웠다는 것을 느낄 수 있었습니다.

댓글