写一个串的定长顺序存储结构C语言代码
时间: 2024-10-16 07:11:02 浏览: 36
在C语言中,我们可以使用数组来创建一个定长顺序存储结构来存储字符串。以下是一个简单的例子,它定义了一个结构体`StringStruct`用于存储字符串,并提供了一个函数`createStringArray`来动态分配内存并初始化该数组:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体 StringStruct 用于存储字符串及其长度
typedef struct {
char* data;
int length;
} StringStruct;
// 动态创建字符串数组的函数
StringStruct** createStringArray(int capacity) {
StringStruct** array = (StringStruct**)malloc(capacity * sizeof(StringStruct*));
for (int i = 0; i < capacity; ++i) {
array[i] = (StringStruct*)malloc(sizeof(StringStruct)); // 分配每个元素的空间
array[i]->data = NULL; // 初始化数据指针
array[i]->length = 0; // 初始化长度
}
return array;
}
// 添加字符串到数组的函数,这里假设数组已预先有足够的空间
void addStringToArray(StringStruct** array, const char* str) {
for (int i = 0; i < strlen(str); ++i) {
if (array[i]->data == NULL) { // 如果找到第一个未使用的索引
array[i]->data = (char*)malloc((strlen(str) + 1) * sizeof(char)); // 动态分配足够存放字符串的空间
strcpy(array[i]->data, str); // 将字符串复制到数组
array[i]->length = strlen(str);
break; // 找到位置后停止遍历
}
}
}
// 示例用法
int main() {
int capacity = 5;
StringStruct** stringArray = createStringArray(capacity);
// 添加一些字符串
addStringToArray(stringArray, "Hello");
addStringToArray(stringArray, "World");
// 输出数组内容
for (int i = 0; i < capacity && stringArray[i]->data != NULL; ++i) {
printf("String at index %d: %s\n", i, stringArray[i]->data);
}
// 清理内存
for (int i = 0; i < capacity; ++i) {
free(stringArray[i]->data);
free(stringArray[i]);
}
free(stringArray);
return 0;
}
阅读全文
相关推荐


















