gpt4 book ai didi

c - 动态长度数组

转载 作者:行者123 更新时间:2023-11-30 20:08:16 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void) {
char *names = NULL;
int capacity = 0;
int size = 0;

printf("Type 'end' if you want to stop inputting names\n");
while (1) {
char name[100];
printf("Input:\n");
fgets(name, sizeof(name), stdin);

if (strncmp(name, "end", 3) == 0) {
break;
}

if (size == capacity) {
char *temp = realloc(names, sizeof(char) * (size + 1));

if (!temp) {
if (names) {
return 1;
}
}
names = temp;
capacity++;
}

names[size] = name;
size++;
}

for (int i = 0; i < size; i++) {
printf("OUTPUT :%c\n", names[i]);
}

if (names) {
free(names);
}
}

我正在尝试用 C 创建一个动态长度的数组,但我不知道我的代码有什么问题?我认为这是我如何获取用户输入的原因,并且在执行代码 names[size] = name 时出现问题。

最佳答案

您需要声明一个指向字符串 (char**) 的指针数组,而不是指向单个字符串 (char*) 的指针。

这意味着当您想要添加新条目时,不仅需要在数组中为新指针腾出空间(类型是 char* 而不是 char) 但您还必须单独为字符串本身分配存储空间,然后将刚刚为其分配空间的指针设置为该分配的字符串。

关于c - 动态长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57520927/

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