c语言用函数指针提取一个字符串中的数字并求和
时间: 2024-03-21 17:06:48 浏览: 84
C语言写字符串函数及任意个数求和
使用函数指针来提取字符串中的数字并求和可以实现更灵活的代码结构。下面是一个示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int extractAndSum(const char *str, int (*extractFunc)(const char *)) {
int sum = 0;
int num = 0;
int sign = 1;
while (*str != '\0') {
if (isdigit(*str)) {
num = num * 10 + (*str - '0');
}
else if (*str == '-') {
sign = -1;
}
else {
sum += sign * num;
num = 0;
sign = 1;
}
str++;
}
sum += sign * num;
return sum;
}
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin);
int sum = extractAndSum(str, atoi);
printf("字符串中的数字和为:%d\n", sum);
return 0;
}
```
在这段代码中,我们定义了一个名为`extractAndSum`的函数,接受两个参数:一个是要提取数字的字符串指针,另一个是函数指针`extractFunc`,用于指定提取数字的方法。
在`extractAndSum`函数内部,我们使用循环遍历字符串中的每个字符。如果字符是数字,则将其转换为数字并累加到`num`变量中。如果字符是负号,将`sign`变量设为-1。如果字符不是数字,则将当前累加的数字加到总和`sum`中,并重置`num`和`sign`变量。
最后,我们在`main`函数中调用`extractAndSum`函数,并将`atoi`函数作为参数传递给`extractFunc`,以实现将字符串转换为整数的功能。
示例代码中的`atoi`函数是C语言标准库中的一个函数,用于将字符串转换为整数。你也可以自定义其他的提取函数来满足不同的需求。
阅读全文