编写getDoubleFromString函数,该函数可以不断从字符串中取出正浮点数或整数,无数可取,则返回值小于0。函数原型如下: double getDoubleFromString(char *str); Plain Text #include <stdio.h> /* 请在下面编写getDoubleFromString函数 */ int main(void) { char line[300]; while(gets(line) != NULL) { double n; n = getDoubleFromString(line); while(n > 0) { printf("%f\n", n); n = getDoubleFromString(line); } } return 0; } 【输入】 多组数据,每组数据一行 【输出】 针对每组数据,将其中的数输出来。每行一个数,保留小数点后面6位。输入数据中只会有正数,不用考虑负号。两个数之间有至少一个非数字非小数点的字符。
时间: 2024-03-22 07:39:57 浏览: 47
好的,以下是一个示例代码实现getDoubleFromString函数:
```c
#include <stdio.h>
#include <stdlib.h>
double getDoubleFromString(char *str) {
double num = -1; // 初始化为-1,表示未找到数字
char *p = str;
while (*p != '\0') {
if (*p >= '0' && *p <= '9' || *p == '.') {
if (num == -1) {
num = strtod(p, &p);
} else {
strtod(p, &p);
}
} else {
p++;
}
}
return num;
}
int main(void) {
char line[300];
while (fgets(line, sizeof(line), stdin) != NULL) {
double n;
n = getDoubleFromString(line);
while (n > 0) {
printf("%.6f\n", n);
n = getDoubleFromString(line);
}
}
return 0;
}
```
该函数使用指针遍历字符串,如果遇到数字或小数点,则使用`strtod`函数将其转换为double类型的数值,并将指针指向下一个字符;如果遇到非数字非小数点的字符,则跳过该字符。如果找到了数字,则将其赋值给`num`变量。如果未找到数字,则返回-1。在主函数中,使用`fgets`函数读取输入的字符串,并调用`getDoubleFromString`函数来获取其中的数值。如果找到了数值,则输出该数值,并继续查找下一个数值。
阅读全文