C语言写一个函数,判断一个字符串是不是一个带有小数的数字
时间: 2023-02-12 22:52:22 浏览: 280
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool is_decimal_string(char* str) {
int len = strlen(str);
int dot_count = 0;
bool has_digit = false;
for (int i = 0; i < len; i++) {
char c = str[i];
if (c >= '0' && c <= '9') {
has_digit = true;
} else if (c == '.') {
dot_count++;
} else {
return false;
}
}
return has_digit && dot_count == 1;
}
```
该函数接受一个字符串作为参数,遍历字符串中的每一个字符,如果该字符是数字,则将 has_digit 标记设为 true;如果该字符是小数点,则将 dot_count 计数器加 1;如果该字符是其他字符,则返回 false。最后,如果 has_digit 标记为 true 且 dot_count 为 1,则说明该字符串是一个带有小数的数字,函数返回 true;否则返回 false。
注意:该函数不能判断负数,如果要判断负数,需要在函数中加入判断。
相关问题
C语言写一个函数,判断一个字符串是不是一个带有小数的数字,是用1表示,否用0表示,可以判断负数
下面是一个在 C 语言中判断字符串是否是带有小数的数字,并返回 1 或 0 的函数示例:
```
#include <ctype.h>
int is_decimal(const char *str) {
int dot_count = 0;
int digit_count = 0;
if (str == NULL) return 0;
for (; *str; str++) {
if (*str == '.') {
dot_count++;
} else if (isdigit(*str) || (*str == '-' && str == str)) {
digit_count++;
} else {
return 0;
}
}
return (dot_count <= 1 && digit_count > 0);
}
```
这个函数首先检查字符串是否为空,然后遍历字符串中的每个字符,统计小数点和数字的数量。如果字符串中存在除了小数点和数字之外的字符,函数就返回 0。如果字符串中小数点的数量不超过 1 且数字的数量大于 0,函数就返回 1。
注意函数可以判断负数,但是没有判断是否是负数。如果需要判断负数,可以在上面函数中加上判断。
写一个C语言函数,接收一个带有负数的小数字符串,返回double
```c
double string_to_double(char* str) {
double result = 0;
int i = 0, sign = 1;
// check for negative sign
if (str[0] == '-') {
sign = -1;
i++;
}
// convert string to double
for (; str[i] != '\0'; i++) {
if (str[i] >= '0' && str[i] <= '9') {
result = result * 10 + (str[i] - '0');
} else if (str[i] == '.') {
double fraction = 0.1;
for (i++; str[i] != '\0'; i++) {
if (str[i] >= '0' && str[i] <= '9') {
result += (str[i] - '0') * fraction;
fraction *= 0.1;
} else {
break;
}
}
break;
} else {
break;
}
}
return result * sign;
}
```
该函数接收一个字符串作为参数,检查字符串是否以负号开头,并将字符串转换为double类型的数字。注意,这个函数并不能处理非法字符串或溢出情况。
阅读全文