我想每个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]);
}
}
切勿使用'gets'。这本质上是不安全的。 –
您存储currentBook'的'地址在每个数组元素,其中包含最新的条目。我建议'书籍[I] =的strdup(currentBook);'然后事后你必须'free'每个指针数组中,因为'strdup'从'malloc'获取存储器。 –