C判断一字符串是否位浮点数
时间: 2023-10-18 19:21:56 浏览: 437
可以使用C标准库中的strtod函数来判断一个字符串是否为浮点数。strtod函数将字符串转换为双精度浮点数(double类型),如果转换成功,则说明字符串是一个浮点数;如果转换失败,则说明字符串不是一个浮点数。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int is_float(char *str) {
char *endptr;
double num = strtod(str, &endptr);
if (endptr == str || isspace(*endptr)) {
return 0; // 转换失败或字符串中有非空格字符
}
while (*endptr) {
if (!isspace(*endptr)) {
return 0; // 字符串中还有非空格字符
}
endptr++;
}
return 1;
}
int main() {
char str1[] = "3.14";
char str2[] = "123";
char str3[] = "abc";
char str4[] = "1.2.3";
char str5[] = " 4.56 ";
printf("%s is a float number: %d\n", str1, is_float(str1));
printf("%s is a float number: %d\n", str2, is_float(str2));
printf("%s is a float number: %d\n", str3, is_float(str3));
printf("%s is a float number: %d\n", str4, is_float(str4));
printf("%s is a float number: %d\n", str5, is_float(str5));
return 0;
}
```
输出:
```
3.14 is a float number: 1
123 is a float number: 0
abc is a float number: 0
1.2.3 is a float number: 0
4.56 is a float number: 1
```
在is_float函数中,首先使用strtod函数将字符串转换为double类型的浮点数,如果转换失败,则返回0。然后遍历剩余的字符串,如果发现非空格字符,则返回0。最后,如果字符串中所有字符都是空格,则认为字符串是一个浮点数,返回1。
阅读全文