编写函数来打印存储在数组中的字符串

时间:2013-02-15 11:04:15

标签: c arrays function

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

我的示例代码如下:

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

}

我这样做是为了了解数组如何传递给函数。如果有人能帮助我,请欣赏它。

由于

3 个答案:

答案 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)指向指针数组中的第二个指针,添加另一个*访问指向的值指针。