用c语言设计一函数可以将一个含有多个整数的字符串,存入一整型数组,并利用此函数将从键盘输入一行含有多个数字的字符串,按照从小到大的顺序排好重新输出
时间: 2024-10-10 12:06:05 浏览: 32
在 C 语言中,你可以设计一个函数 `string_to_sorted_array` 来实现这个功能。首先,你需要一个辅助函数来处理字符串转整数的过程,然后主函数负责读取输入、排序数组,并打印结果。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
// 辅助函数:将字符串转换为整数并添加到数组
int convert_string_to_int(char *str, int arr[], int *index) {
char *endptr;
int num = strtol(str, &endptr, 10);
if (*endptr == '\0' && endptr != str) { // 成功转换
arr[*index] = num;
return ++(*index); // 返回已添加元素的索引
} else {
return *index; // 如果无法转换,返回当前索引,表示结束
}
}
// 主函数:排序并打印数组
void sort_and_print(int arr[], int size) {
qsort(arr, size, sizeof(int), compare_ints); // 使用标准库的qsort函数排序
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// 比较函数,用于qsort
int compare_ints(const void *a, const void *b) {
return (*(const int*)a - *(const int*)b);
}
// 转换字符串并存储函数
void string_to_sorted_array(char *input, int arr[]) {
int index = 0;
while (true) {
index = convert_string_to_int(input, arr, &index);
if (index >= sizeof(arr)) break; // 如果数组满,则跳出循环
input += strlen(input) + 1; // 移动指针到下一个数字位置(假设每个数字后有空格)
}
sort_and_print(arr, index);
}
int main() {
int arr[100]; // 假设最大输入不超过100个整数
char input[1000]; // 存储用户输入的字符串
fgets(input, sizeof(input), stdin); // 从键盘读取输入
string_to_sorted_array(input, arr);
return 0;
}
```
在这个程序中,`string_to_sorted_array` 函数会把输入的字符串转换成整数并存储在数组 `arr` 中,之后调用 `sort_and_print` 对数组进行排序并打印。
阅读全文