逐字符打印字符串数组

时间:2016-02-11 15:22:56

标签: c arrays

我对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并通过移动数组指针并开始遍历循环来移动到下一个项目。

2 个答案:

答案 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.");
        }
}

我没有使用指针,但我认为无论如何都有效。我希望这有帮助!