如何遍历C语言中的关键字
时间: 2023-03-02 19:35:25 浏览: 47
要遍历C语言中的关键字,可以使用C语言标准库中的<string.h>头文件和<ctype.h>头文件中的函数。下面是一种实现方式:
1. 定义一个字符数组来存储C语言的所有关键字,例如:
```
char *keywords[] = {"auto", "break", "case", "char", "const", "continue", "default", "do",
"double", "else", "enum", "extern", "float", "for", "goto", "if",
"int", "long", "register", "return", "short", "signed", "sizeof", "static",
"struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while"};
```
2. 对于输入的每个单词,使用C语言标准库中的<ctype.h>头文件中的函数检查它是否为关键字。例如,使用strcmp函数比较输入的单词是否与数组中的任何一个关键字相等:
```
int is_keyword(char *word) {
int i, n;
n = sizeof(keywords) / sizeof(char *);
for (i = 0; i < n; i++) {
if (strcmp(word, keywords[i]) == 0) {
return 1;
}
}
return 0;
}
```
3. 对于输入的每个单词,还需要使用C语言标准库中的<ctype.h>头文件中的函数将其转换为小写字母,以便与关键字数组中的字符串进行比较。例如,使用tolower函数将单词转换为小写字母:
```
void to_lower(char *word) {
while (*word) {
*word = tolower(*word);
word++;
}
}
```
4. 最后,可以将输入的文本分解成单词,并调用is_keyword函数和to_lower函数来检查它们是否为关键字。
以下是一个完整的示例程序,演示如何遍历C语言中的关键字:
```
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char *keywords[] = {"auto", "break", "case", "char", "const", "continue", "default", "do",
"double", "else", "enum", "extern", "float", "for", "goto", "if",
"int", "long", "register", "return", "short", "signed", "sizeof", "static",
"struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while"};
int is_keyword(char *word) {
int i, n;
n = sizeof(keywords) / sizeof(char *);
for (i = 0; i < n; i++) {
if (strcmp(word, keywords[i]) == 0) {
return 1;
}
}
return 0;
}
void to_lower(char *word) {
while (*word) {
*word = tolower(*word);
word++;
}
}
int main() {
char text[] = "for (int i = 0; i < n; i++) { printf(\"%d\\n\", i); }";
char *word;
word = strtok(text, " ");