gpt4 book ai didi

c - 从命令行获取输入?

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

我想将 5 个书名分别存储在数组中并打印出来。但是我在这里做错了什么?输出将最后一个条目打印 5 次。

#include <stdio.h>

int main(int argc, const char * argv[])
{
char * books[5];
char currentBook[1024];
for(int i = 0; i < 5; i++)
{
printf("Enter book:\n");
gets(currentBook);
books[i] = currentBook;
}

for(int i = 0; i <5; i ++)
{
printf("Book #%d: %s\n", i, books[i]);
}
}

最佳答案

根据你的声明

char * books[5];
char currentBook[1024];

,这段代码...

books[i] = currentBook;

... 将 books[i] 指定为指向数组 currentBook 开头的指针。您对各种 i 多次执行此操作,导致指针数组都指向同一个数组。当您稍后打印每个指向的字符串时,它当然是同一个字符串。

您可以通过使用 strdup() 制作输入缓冲区的副本而不是分配 books 的每个元素指向同一事物来解决这个问题。

关于c - 从命令行获取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36957655/

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