写出完整的程序 实现c语言字符串拆分出连续的整数,并由小到大排列
时间: 2023-06-05 09:08:19 浏览: 107
C语言程序设计-对长度为8个字符的字符串,将8个字符按降序排列;例如:原来的字符串为CEAedcab,排序后输出为edcbaE
5星 · 资源好评率100%
以下是一个示例程序,可以实现这个功能:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare_integers(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
char input_string[1000];
printf("Please enter a string of integers separated by non-digit characters:\n");
scanf("%s", input_string);
int numbers[1000];
int num_count = 0;
char* token = strtok(input_string, " ,.-");
while (token != NULL) {
int num = atoi(token);
if (num != 0) {
numbers[num_count] = num;
num_count++;
}
token = strtok(NULL, " ,.-");
}
qsort(numbers, num_count, sizeof(int), compare_integers);
printf("Sorted numbers:\n");
for (int i = 0; i < num_count; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
这个程序首先要求用户输入一个字符串(假设在运行程序时输入,而不是在代码中写死),然后使用 `strtok` 函数拆分出其中的整数。这个函数会将字符串分割成若干个子字符串,每个子字符串被非数字字符隔开。我们使用空格、逗号、短横线和句点作为分隔符。分割出的子字符串中,如果是数字,就将其转换成整数并存储到一个数组中。最后,我们使用 `qsort` 函数对这个数组进行排序,并将结果输出到屏幕上。
值得注意的是,为了避免不必要的麻烦,我们使用 `atoi` 函数将拆分出的每个字符串转换成整数,而不是使用 `sscanf` 函数。因为 `sscanf` 函数可能会受到用户输入格式的限制,而 `atoi` 函数则比较容错。当然,这个程序还可以有很多改进的空间,比如可以增加对用户输入非法的处理程序等等。
阅读全文