gpt4 book ai didi

c - 不知道为什么字符数组的成员在 C 中不能正确打印

转载 作者:行者123 更新时间:2023-11-30 21:17:47 25 4
gpt4 key购买 nike

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

int main()
{
char *input[1000];
char *word;
int i = 0;
while (scanf("%s", word) != EOF)
{
input[i] = word;
i++;
}
printf("%s ", input[0]);
printf("%s ", input[1]);
printf("%s ", input[2]);
}

例如,如果输入是“My name is”,则输出将为“is is is”,而不是“My name is”。谁能指出我的代码哪里错了。

最佳答案

这里有一些问题,让我尝试解决它们

使用以下内容声明一个 char 指针数组但这些指针没有指向任何地方,或者更确切地说它们是指向任何地方;-)。

char *input[1000];

现在声明一个指针,该指针未初始化,指向任何地方

char *word;

现在您使用未初始化的指针从键盘读取

while (scanf("%s", word) != EOF)

您需要做什么来为您读取的内容分配内存

首先有一个临时缓冲区来从键盘读取

char word[100];

现在,在从键盘读取时复制单词的内容并分配内容的内存。

input[i++] = strdup(word);

不要忘记释放 input[] 所指向的内存,它也是如果你初始化 input[] 指针,这样你就可以区分使用的指针和未初始化的指针。

char* input[1000] = { NULL };

关于c - 不知道为什么字符数组的成员在 C 中不能正确打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35217966/

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