gpt4 book ai didi

c - 如何通过指向字符串数组来保存输入?

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:54 25 4
gpt4 key购买 nike

这里我想通过指向一个数组来保存输入字符串,但输出将全部更改为最后插入的输入。

char **month;
int row, col;
int i, j;
char name[10];

month = (char **)malloc(3*sizeof(char *));

for (int i = 0; i < 3; i++)
{
month[i] = (char *)malloc(10*sizeof(char));

printf("Enter name\n");

scanf("%s", name);

month[i] = name;
}

for (int i = 0; i < 3; i++)
{
printf("%s\n", month[i]);
}

return 0;

知道如何解决吗?

最佳答案

这两行是有问题的:

month[i] = (char *)malloc(10*sizeof(char));
...
month[i] = name;

第一个分配内存并使 month[i] 指向该内存。第二行重新分配 month[i] 使其指向name。您丢失了原始内存(并发生内存泄漏)。除了内存泄漏之外,它还意味着 month所有 元素将指向同一内存,其中将包含最后读取的输入。

您可以 copy 而不是使用赋值字符串:

strcpy(month[i], name);

或者跳过临时的name变量,直接读入month[i]:

scanf("%9s", month[i]);

关于c - 如何通过指向字符串数组来保存输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44799164/

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