用c语言分别写一个识别c语言标识符和整数的函数,并写一个主函数,输入字符串,调用上面两个函数,分别识别出字符串是标识符还是整数
时间: 2024-09-19 21:14:44 浏览: 45
在 C 语言中,你可以使用一些基本的字符判断和字符串处理规则来创建识别 C 语言标识符和整数的函数。下面是一个简单的实现示例:
```c
#include <stdio.h>
#include <ctype.h> // 包含用于字符测试的头文件
// 函数声明,用于检测是否为有效的标识符
int is_valid_identifier(const char *str);
// 函数声明,用于检测是否为整数
int is_integer(const char *str);
// 函数实现 - 检测标识符
int is_valid_identifier(const char *str) {
if (str == NULL || strlen(str) == 0)
return 0;
for (const char *ch = str; *ch != '\0'; ch++) {
if (!isalnum(*ch) && *ch != '_' && *ch != '$') { // 标识符只能包含字母、数字、下划线和美元符号
return 0;
}
}
return 1; // 如果没有遇到非允许字符,则认为是标识符
}
// 函数实现 - 检测整数
int is_integer(const char *str) {
if (str == NULL || *str == '\0')
return 0;
while (*str && isspace(*str)) // 跳过前导空白
str++;
if (*str == '+' || *str == '-') { // 允许整数有正负号
str++;
}
int num = 0;
bool negative = false;
if (*str == '-') { // 如果第一个字符是负号,设置标志
negative = true;
str++;
} else if (*str == '+') { // 同理,如果第一个字符是正号
str++;
}
while (isdigit(*str)) { // 只有数字字符是有效整数的一部分
num = num * 10 + (*str - '0');
str++;
}
if (negative && num == 0) return 0; // 如果前面是负号但结果是0,这不是整数
return num != 0; // 返回非零表示整数,零则不是
}
// 主函数
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 清除fgets读取的换行符
int identifier_status = is_valid_identifier(input);
int integer_status = is_integer(input);
if (identifier_status) {
printf("%s 是一个有效的标识符.\n", input);
} else {
printf("%s 不是有效的标识符.\n", input);
}
if (integer_status) {
printf("%s 是一个整数.", input);
if (identifier_status)
printf("(同时也是一个标识符)");
else
printf("");
} else {
printf("%s 不是一个整数.\n", input);
}
return 0;
}
```
这个程序首先接收用户输入的字符串,然后通过 `is_valid_identifier()` 和 `is_integer()` 分别判断其是否为标识符和整数。注意,这个实现仅适用于最基础的情况,对于更复杂的 C 语言标识符规范(如不能以数字开头等)可能会有所局限。
阅读全文