我正在尝试向用户询问三个字符串,将它们存储到字符串数组中,然后打印它们。以下代码编译正常,但不打印任何内容。我不知道为什么它不起作用,任何帮助将不胜感激:
char *buffer[3];
int i;
int len = sizeof(buffer)/sizeof(char*);
for (i=0; i<len; i++)
{
printf("Enter word: ");
scanf("%s", buffer[i]);
printf("%s", (const char*)buffer[i]);
}
让我感到困惑的是,我剥离了一个&#34;等级&#34;指针,它工作正常(即从缓冲区删除*:char缓冲区[3],scanf(&#34;%s&#34;,缓冲区),printf(&#34;%s&#34;,(const char) *)缓冲))。所以,只要我添加一个&#34;等级&#34;我认为这样可以保持事情的顺利但却失败了。它与缓冲区的初始化有关吗?非常感谢
答案 0 :(得分:1)
C中的字符串是一个字符数组。指针不是一个字符数组。
Buffer是一个由3个指针组成的数组。您没有分配内存来将字符串保存在任何位置。并且指针未初始化,因此它们指向垃圾位置。
您必须使指针指向已分配的内存,或者声明一个数组数组(2D数组),例如char buffer [3][50]
,其中3是字符串数,50是最大字符串长度,包括空终止。