키워드(Keyword)란?
키워드(keyword)는 프로그래밍 언어에 미리 정의된 예약어(reserved word)로, 고정된 의미를 가지며 컴파일러가 내부적으로 특정 연산을 수행할 때 사용하는 단어입니다. C 언어는 총 32개의 키워드를 지원하며, 모든 키워드는 auto, break, case, const처럼 반드시 소문자로 작성해야 합니다.
키워드는 언어 차원에서 의미가 예약되어 있기 때문에 프로그램 안에서 변수 이름이나 함수 이름으로 사용할 수 없습니다. 참고로 C++는 이 32개 키워드 외에도 class, new, template, try, namespace 등 추가 예약어를 더 지원합니다.
C 언어의 32개 키워드 목록
| 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 |
문자열이 키워드인지 확인하는 원리
- 키워드는 예약어이므로 프로그램에서 변수 이름으로 사용할 수 없습니다.
- 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이면 키워드가 아님을 출력합니다.