我正在编写一个将用户输入字符串存储在数组中的程序。然后我将数组传递给函数以打印第二个元素。但是我意识到只要执行函数内部的打印,程序就会崩溃。
我的示例代码如下:
main()
{
int num, count;
char strStorage[10][10];
printf("\nEnter how many strings: ");
scanf( "%d" , &num);
fflush(stdin);
for ( count = 0 ; count < num ; count++)
{
printf("Enter a string: ");
gets(strStorage[count]);
fflush(stdin);
}
//This works
printf("%s", strStorage[2]);
printMyArray(strStorage);
}
void printMyArray(char *myArray[ ])
{
//This doesnt work
printf("%s", myArray[2]);
}
我这样做是为了了解数组如何传递给函数。如果有人能帮助我,请欣赏它。
由于
答案 0 :(得分:0)
问题是你应该把double数组作为double数组传递,而不是作为指针数组传递。
void printMyArray(char *myArray[ ])
变为
void printMyArray(char myArray[][10])
答案 1 :(得分:0)
您的代码有几个问题:
A)你为10个字符串留出空间,但是用户可以选择输入超过10个字符串,而你没有做任何事情来阻止它们。
B)用户可以输入长度超过9个字符的字符串(您设置的最大值)。
C)其他答案会说char* []
与char [][10]
答案 2 :(得分:0)
char *myArray[ ]
声明了一个指针数组。所以,每个元素都是一个双指针。
访问您需要的元素
printf("%s", *myArray[2]);
这里,*myArray[2]
相当于*(*(myArray + 2))
,其中*(myArray + 2)
指向指针数组中的第二个指针,添加另一个*
访问指向的值指针。