写一个c语言函数判断char* p1=“38.67”和char* p2=“34”是实常数还是整常数
时间: 2024-09-23 17:09:08 浏览: 29
在C语言中,判断字符串`p1`和`p2`表示的是实数(浮点数)还是整数并不直接可行,因为它们看起来都是数字,但没有明确的标识符表明它们是整数还是浮点数。不过,可以尝试解析字符串并根据小数点的存在来做出判断。
下面是一个简单的函数,但它并不是标准库的一部分,也不能保证绝对正确,因为用户输入的字符串可能会有错误格式:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef enum { INTEGER, REAL } NumberType;
NumberType classifyNumber(const char* number) {
size_t len = strlen(number);
if (len > 2 && number[0] == '-' || number[0] == '+') {
if (isdigit(number[1])) { // 如果第二个字符是数字
if (number[len - 1] == '.') { // 如果最后一个字符是小数点
return REAL;
} else {
return INTEGER;
}
} else if (number[1] == '.' && len > 3 && isdigit(number[2])) { // 长于3个字符并且第二个字符是小数点
return REAL;
}
} else if (isdigit(*number)) {
return INTEGER;
}
// 如果无法判断,假设为整数
return INTEGER;
}
int main() {
char* p1 = "38.67";
char* p2 = "34";
NumberType type1 = classifyNumber(p1);
NumberType type2 = classifyNumber(p2);
if (type1 == INTEGER) {
printf("%s 是整数\n", p1);
} else {
printf("%s 是浮点数\n", p1);
}
if (type2 == INTEGER) {
printf("%s 是整数\n", p2);
} else {
printf("%s 是浮点数\n", p2);
}
return 0;
}
```