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

문자열의 ASCII 값을 출력하는 C 프로그램

문자열(String)이란?

C 언어에서 여러 개의 문자들이 하나의 배열로 묶인 것을 문자열(string)이라고 부릅니다. 문자열은 마지막에 널 문자('\0')를 포함한다는 점이 일반적인 문자 배열과 다릅니다.

문자열 선언

문자열은 아래와 같은 형식으로 선언합니다.

char stringname [size];

예를 들어 char string[50];은 최대 50글자를 저장할 수 있는 문자열을 선언한 것입니다.

문자열 초기화

문자열을 초기화하는 방법에는 크게 두 가지가 있습니다.

1. 단일 문자 상수 사용

각 문자를 요소로 나열하고 마지막에 널 문자를 직접 추가하는 방식입니다.

char string[10] = {'H', 'e', 'l', 'l', 'o', '\0'};

2. 문자열 상수 사용

큰따옴표로 묶인 문자열 리터럴을 대입하면 컴파일러가 자동으로 널 문자를 붙여줍니다.

char string[10] = "Hello";

문자열 접근하기

입출력 시 제어 문자 %s를 사용하면 널 문자('\0')를 만날 때까지 문자열 전체를 한 번에 처리할 수 있습니다. 반면 문자 하나씩 접근하려면 인덱스와 반복문을 활용해야 합니다.

ASCII 값 출력 로직

실행 중에 입력받은 문자열의 각 문자에 대한 ASCII 값을 출력하는 핵심 로직은 다음과 같습니다. 문자 하나는 내부적으로 정수 값으로 저장되므로, 같은 문자를 %c%d로 각각 출력하면 문자와 그에 대응하는 ASCII 코드를 동시에 확인할 수 있습니다.

while(str[i] != '\0'){
    printf("\n%c의 ASCII 값 = %d", str[i], str[i]);
    i++;
}

예제 프로그램

다음은 사용자로부터 문장을 입력받아 각 문자의 ASCII 값을 출력하는 완전한 C 프로그램입니다.

#include<stdio.h>
int main() {
    char string[50];
    int i = 0;
    printf("문장을 입력하세요: ");
    gets(string);
    while(string[i] != '\0') {
        printf("\n%c의 ASCII 값 = %d", string[i], string[i]);
        i++;
    }
    getch();
    return 0;
}

참고: gets() 함수는 입력 길이를 제한할 수 없어 버퍼 오버플로우 위험이 있어 현대 C 표준(C11)에서는 제거되었습니다. 실제 프로젝트에서는 fgets()scanf()의 폭 지정 기능을 사용하는 것이 안전합니다.

실행 결과

위 프로그램을 실행하고 "Tutorials Point"를 입력하면 다음과 같은 결과가 출력됩니다.

문장을 입력하세요: Tutorials Point

T의 ASCII 값 = 84
u의 ASCII 값 = 117
t의 ASCII 값 = 116
o의 ASCII 값 = 111
r의 ASCII 값 = 114
i의 ASCII 값 = 105
a의 ASCII 값 = 97
l의 ASCII 값 = 108
s의 ASCII 값 = 115
 의 ASCII 값 = 32
P의 ASCII 값 = 80
o의 ASCII 값 = 111
i의 ASCII 값 = 105
n의 ASCII 값 = 110
t의 ASCII 값 = 116

출력 결과에서 공백 문자의 ASCII 값이 32로 표시되는 것도 확인할 수 있습니다. 이처럼 반복문과 서식 지정자만 활용하면 별도의 라이브러리 함수 없이도 문자열의 모든 문자를 손쉽게 분석할 수 있습니다.