请使用C语言实现上述Python代码
时间: 2024-10-11 15:06:58 浏览: 25
使用C语言与python分别实现文件的读写功能
在C语言中,处理字符串中的数字需要更复杂的逻辑,因为C标准库没有内置的`isdigit()`函数。这里我们可以使用`strtok()`函数进行分割,并使用`atoi()`或`sscanf()`函数转换字符串为整数。假设字符串已经被初始化为`char str[] = "-10, 780, 980"`,以下是C代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 函数用于分割字符串并返回整数
int extract_number(const char *str, char **endptr) {
int number;
while (sscanf(str, "%d", &number) == 1) {
// 将数字添加到结果数组并将指针移动到下一个数字前
*endptr = str + strlen(*endptr);
return number;
}
*endptr = NULL; // 如果没有找到更多数字,则设置endptr为NULL
return -1; // 表示未找到有效的数字
}
int main() {
char str[] = "-10, 780, 980";
char *token;
int numbers[3];
int i;
token = strtok(str, ", "); // 分割字符串
if (!token) { // 如果没有剩余字符串,则结束
printf("No more numbers.\n");
return 0;
}
for (i = 0; i < 3; ++i) {
numbers[i] = extract_number(token, &token); // 提取并存储数字
if (numbers[i] == -1) break; // 如果找不到更多数字,退出循环
}
// 打印结果
for (i = 0; i < 3 && numbers[i] != -1; ++i)
printf("%d\n", numbers[i]);
return 0;
}
```
请注意,这个C版本的代码依赖于`<stdio.h>`中的`sscanf()`函数,如果在C99及以后的标准下编译,应该能正常工作。然而,对于老版本的C编译器,可能需要替换为手动解析字符串的方式,这可能会复杂一些。
阅读全文