gpt4 book ai didi

c - C中的动态字符串数组结构

转载 作者:行者123 更新时间:2023-12-04 11:18:06 24 4
gpt4 key购买 nike

我必须在c中编写一个函数,该函数将返回动态字符串数组。这是我的要求:


我有10个不同的检查函数,它们将返回true或false以及相关的错误文本。 (错误文本字符串也是动态的)。
我的函数必须收集结果(是或否)+错误字符串,它将被称为n个检查函数。因此,我的函数必须收集n个结果,最后将一个动态字符串数组返回给其他函数。

最佳答案

您可以使用malloc()分配任意长度的数组(类似于Java中的“ new”),并使用realloc()使其增大或缩小。

您必须记住使用free()释放内存,因为在C中没有垃圾收集器。

检查:http://www.gnu.org/software/libc/manual/html_node/Memory-Allocation.html#Memory-Allocation

编辑:

#include <stdlib.h>
#include <string.h>
int main(){
char * string;
// Lets say we have a initial string of 8 chars
string = malloc(sizeof(char) * 9); // Nine because we need 8 chars plus one \0 to terminate the string
strcpy(string, "12345678");

// Now we need to expand the string to 10 chars (plus one for \0)
string = realloc(string, sizeof(char) * 11);
// you can check if string is different of NULL...

// Now we append some chars
strcat(string, "90");

// ...

// at some point you need to free the memory if you don't want a memory leak
free(string);

// ...
return 0;
}


编辑2:
这是用于分配和扩展指向chars的指针数组(字符串数组)的示例

#include <stdlib.h>
int main(){
// Array of strings
char ** messages;
char * pointer_to_string_0 = "Hello";
char * pointer_to_string_1 = "World";
unsigned size = 0;

// Initial size one
messages = malloc(sizeof(char *)); // Note I allocate space for 1 pointer to char
size = 1;

// ...
messages[0] = pointer_to_string_0;


// We expand to contain 2 strings (2 pointers really)
size++;
messages = realloc(messages, sizeof(char *) * size);
messages[1] = pointer_to_string_1;

// ...
free(messages);

// ...
return 0;
}

关于c - C中的动态字符串数组结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com