我需要一个C语言函数,它的功能是将一个整形数组由数组中的若干空格分割为若干字符串,并返回地址
时间: 2023-06-02 18:01:38 浏览: 82
c语言中字符串分割函数及实现方法
以下是一个实现该功能的C语言函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char** split_string(int* arr, int len) {
int i, j, k;
int count = 0;
char** str_arr;
// 计算字符串数量
for (i = 0; i < len; i++) {
if (arr[i] == -1) {
count++;
}
}
// 分配字符串数组内存
str_arr = (char**)malloc(count * sizeof(char*));
if (str_arr == NULL) {
printf("Error: Failed to allocate memory.\n");
return NULL;
}
// 分割字符串
k = 0;
for (i = 0; i < len; i++) {
if (arr[i] == -1) {
// 分配字符串内存
str_arr[k] = (char*)malloc((i-j+1) * sizeof(char));
if (str_arr[k] == NULL) {
printf("Error: Failed to allocate memory.\n");
return NULL;
}
// 复制字符串
strncpy(str_arr[k], (char*)&arr[j], i-j);
str_arr[k][i-j] = '\0';
// 更新索引
j = i + 1;
k++;
}
}
return str_arr;
}
int main() {
int arr[] = {1, 2, 3, -1, 4, 5, -1, 6, -1, -1};
int len = sizeof(arr) / sizeof(int);
char** str_arr = split_string(arr, len);
if (str_arr != NULL) {
int i;
for (i = 0; i < len; i++) {
printf("%s\n", str_arr[i]);
free(str_arr[i]);
}
free(str_arr);
}
return 0;
}
```
该函数接收一个整型数组和数组长度作为参数,并将数组中的若干空格分割为若干字符串。函数返回一个指向字符串数组的指针,每个字符串都以'\0'结尾。
在函数中,首先计算字符串数量,并分配字符串数组所需的内存。然后,使用两个索引变量j和k分别表示当前字符串的起始和结束位置。遍历整型数组,当遇到-1时,即表示当前字符串已结束,将其复制到字符串数组中,并更新索引变量。最后返回指向字符串数组的指针。
阅读全文