用c语言编程实现两个函数:识别标识符、识别整数 编写主函数,输入一个字符串,调用上述两个函数,分别输出识别出的单词是标识符还是整数
时间: 2024-09-20 10:03:42 浏览: 69
在C语言中,我们可以使用一些基本的字符处理和正则表达式库(如`<ctype.h>`和`<regex.h>`) 来实现这个功能。这里是一个简单的示例,展示了如何通过函数来判断输入的字符串是否是标识符或整数。
```c
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <regex.h>
// 函数声明
bool is_identifier(const char *str);
bool is_integer(const char *str);
// 函数定义:检查是否为标识符
bool is_identifier(const char *str) {
if (str[0] == '_' || isalpha(str[0])) { // 首字符可以是字母或下划线
for (int i = 1; str[i]; ++i) {
if (!isalnum(str[i]) && str[i] != '_') { // 后续字符只能是字母、数字或下划线
return false;
}
}
return true;
} else {
return false;
}
}
// 函数定义:检查是否为整数
bool is_integer(const char *str) {
int num = 0, sign = 1;
if (*str == '-') {
sign = -1;
str++;
}
while (isdigit(*str)) {
num = num * 10 + (*str - '0');
str++;
}
if (*str == '.' && str[1] && isdigit(str[1])) {
double dnum = num + (str[1] - '0') / 10.0;
return (dnum == trunc(dnum));
}
return num != 0 && sign == (str[0] == '-');
}
// 主函数
int main() {
char input[100];
printf("请输入一个字符串:");
fgets(input, sizeof(input), stdin); // 读取用户输入
input[strcspn(input, "\n")] = '\0'; // 移除换行符
if (is_identifier(input)) {
printf("%s 是一个标识符.\n", input);
} else if (is_integer(input)) {
printf("%s 是一个整数.\n", input);
} else {
printf("%s 既不是标识符也不是整数.\n", input);
}
return 0;
}
```
在这个例子中,`is_identifier()`函数用于检测是否为标识符,`is_integer()`函数用于检测是否为整数。主函数从用户那里获取输入,并使用这两个函数进行判断。
阅读全文