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

주어진 문자열이 키워드인지 확인하는 C 프로그램

키워드(Keyword)란?

키워드(keyword)는 프로그래밍 언어에 미리 정의된 예약어(reserved word)로, 고정된 의미를 가지며 컴파일러가 내부적으로 특정 연산을 수행할 때 사용하는 단어입니다. C 언어는 총 32개의 키워드를 지원하며, 모든 키워드는 auto, break, case, const처럼 반드시 소문자로 작성해야 합니다.

키워드는 언어 차원에서 의미가 예약되어 있기 때문에 프로그램 안에서 변수 이름이나 함수 이름으로 사용할 수 없습니다. 참고로 C++는 이 32개 키워드 외에도 class, new, template, try, namespace 등 추가 예약어를 더 지원합니다.

C 언어의 32개 키워드 목록

autodoubleintstruct
breakelselongswitch
caseenumregistertypedef
charexternreturnunion
constfloatshortunsigned
continueforsignedvoid
defaultgotosizeofvolatile
doifstaticwhile

문자열이 키워드인지 확인하는 원리

  • 키워드는 예약어이므로 프로그램에서 변수 이름으로 사용할 수 없습니다.
  • C 언어에는 총 32개의 키워드가 존재합니다.
  • 입력받은 문자열을 키워드 목록의 각 항목과 strcmp() 함수로 하나씩 비교하여, 완전히 일치하는 항목이 있으면 그 문자열은 키워드입니다.

예제 코드

#include <stdio.h>
#include <string.h>
int main() {
    char keyword[32][10] = {
        "auto", "double", "int", "struct", "break", "else", "long",
        "switch", "case", "enum", "register", "typedef", "char",
        "extern", "return", "union", "const", "float", "short",
        "unsigned", "continue", "for", "signed", "void", "default",
        "goto", "sizeof", "volatile", "do", "if", "static", "while"
    };
    char str[] = "for";
    int flag = 0, i;
    for(i = 0; i < 32; i++) {
        if(strcmp(str, keyword[i]) == 0) {
            flag = 1;
            break;
        }
    }
    if(flag == 1)
        printf("%s is a keyword", str);
    else
        printf("%s is not a keyword", str);
    return 0;
}

실행 결과

for is a keyword

코드 설명

먼저 2차원 문자 배열 keyword[32][10]에 C 언어의 32개 키워드를 모두 저장해 둡니다. 그다음 strcmp() 함수로 입력 문자열 str을 각 키워드와 순서대로 비교합니다. 두 문자열이 완전히 같으면 strcmp()는 0을 반환하고, 이때 flag 변수를 1로 설정한 뒤 반복을 종료합니다. 마지막으로 flag 값이 1이면 해당 문자열이 키워드임을, 0이면 키워드가 아님을 출력합니다.