gpt4 book ai didi

c - strcpy() 和字符串数组

转载 作者:行者123 更新时间:2023-12-01 21:18:37 25 4
gpt4 key购买 nike

我需要将用户的输入存储到字符串数组中。

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

char *history[10] = {0};

int main (void) {

char input[256];

input = "input";

strcpy(history[0], input);

return (EXIT_SUCCESS);

}

在终端上运行它时,我收到段错误,在 NetBeans 中,我收到 main.c:11: 错误:赋值中的类型不兼容。我还尝试移动所有历史记录以将最新输入存储到第一个位置(历史记录[0])。

history[9] = history[8];
history[8] = history[7];
history[7] = history[6];
history[6] = history[5];
history[5] = history[4];
history[4] = history[3];
history[3] = history[2];
history[2] = history[1];
history[1] = history[0];
history[0] = input;

但这会导致这样的输出。

如果输入是“输入”

历史记录0:输入历史1:空等等

如果输入是"new"

历史记录 0:新历史1:新历史 2:空等等

每次输入新输入时,指向字符串的指针都会发生移动,但只会导致最新值保存在历史数组中。

最佳答案

您需要为字符串分配空间。这可以通过多种方式完成,两个领先的竞争者如下所示:

char history[10][100];

char *history[10];
for (j = 0; j < 10; ++j)
history [j] = malloc (100);

第一个静态分配 10 个字符缓冲区,每个缓冲区 100 个字符。正如您所写,第二个静态分配十个指向字符的指针。通过用动态分配的内存(可以是任意长度)填充指针,以后就有内存可以读取字符串。

关于c - strcpy() 和字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901962/

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