我是从Java转来的,对C语言还不熟悉,想要写一个简短的程序,能够从stdin读取字符数组并将每个字符串存储在一个数组中。在读取完字符串后,我只想打印它们,但这时候情况就变得非常困难了。
以下是我的代码:
#include <stdlib.h>
#include <stdio.h>
int main(){
char **stringarray[2];
char buffer[5];
int i = 0;
while( i < 2 && fgets(buffer, 5, stdin) != NULL){
char *tmp = buffer;
stringarray[i] = &tmp;
i++;
}
for(int i = 0; i < 2; i++){
printf("%s\n", &stringarray[i]);
}
return 0;
}
实际上,第一部分是可以编译的(即输出之前的部分)。我理解我的stringArray必须是char指针数组,因为在C中char数组基本上就是指向第一个字符的指针。起初,我只写了
while( i < 2 && fgets(buffer, 5, stdin) != NULL){
stringarray[i] = buffer;
i++;
}
这也可以编译,但显然我只有一个指针指向缓冲区,它只会保存最后读取的字符串。 我该怎么做才能存储一个简单的字符串数组?
printf("%s\n", &stringarray[i])
中,你使用了 地址(&-运算符)来获取第 i 个元素。这肯定不是你想要的。 - lethal-guitar