我对C还不是很熟悉,还遇到了另一个问题。通常我从这里找到了我的问题的答案,但这次我没有。可能有一个,但无论如何......
这是合约。我有一个字符串数组,我想打印它们,每个项目都有自己的一行。数组以NULL结尾。
以下是我的代码的简化版本。
print_my_array(char *array[])
{
while(*array != NULL){
char *item = *array;
while (item)
{
int i = 0;
printf("%c", item[i]);
i++;
}
printf("\n");
array++;
}
}
所以这就是我相信我的代码所做的。我有一个名为array的数组。我接受名为item的指针并用它指向数组中的第一项。然后我循环遍历该项目并逐个打印所有字符。当我通过项目时,我打印\ n并通过移动数组指针并开始遍历循环来移动到下一个项目。
答案 0 :(得分:3)
内循环错误:
while (item)
{
// all your code
}
应该是
while (*item)
{
printf("%c", *item++);
}
但是,当然,使用printf("%s\n", *array++);
并完全跳过内循环会更有意义。
答案 1 :(得分:0)
我做了一个示例函数,你在一个位置内循环数组,直到它得到一个空值。之后,您会看到是否打印了一些字符,它会告诉您阵列是否无效:
exampleFunction(char array[]){
int position = 0;
while(array[position]) {
printf("%c\n", array[position]);
position++;
}
if(position == 0){
printf("The array was void.");
}
}
我没有使用指针,但我认为无论如何都有效。我希望这有帮助!