0

我正在编写一个将用户输入字符串存储在数组中的程序。然后我将数组传递给一个函数来打印第二个元素。但是,我意识到每当执行函数内部的打印时程序就会崩溃。

我的示例代码如下:

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]);

}

我这样做是为了了解数组如何传递给函数。如果有人可以帮助我,我将不胜感激。

谢谢

4

3 回答 3

0

问题是您应该真正将双精度数组作为双精度数组传递,而不是作为指针数组传递。

 void printMyArray(char *myArray[ ])

变成

 void printMyArray(char myArray[][10])
于 2013-02-15T11:07:43.247 回答
0

您的代码有几个问题:

A)您为 10 个字符串留出了空间,但用户可以选择输入 10 个以上的字符串,而您没有做任何事情来阻止它们。

B) 用户可以输入超过 9 个字符(您设置的最大值)的字符串。

C)正如其他答案所说char* []的不一样char [][10]

于 2013-02-15T11:08:20.220 回答
0

char *myArray[ ]声明一个指针数组。因此,每个元素都是一个双指针。

要访问您需要的元素

printf("%s", *myArray[2]);

这里,*myArray[2]等价于*(*(myArray + 2))where*(myArray + 2)指向指针数组中的第二个指针,加上另一个*访问该指针所指向的值。

于 2013-02-15T11:08:41.097 回答