如何使用while和putchar输出char数组

时间:2019-04-17 13:29:24

标签: c for-loop while-loop

我有一个for循环来输出数组,但是想用while循环重写它。

我有以下for循环可以正常工作:

 for (i = 0; i <arrayLength; i++)
        putchar(output[i]);

并且我试图在while循环中重写上面的代码:


while (i < arrayLength){

        putchar(output[i]);
        i++;
    }

问题是,当我使用while循环运行代码时,没有输出,但是程序结束了

当我使用for循环运行它时,我得到了预期的输出

defghi

我在这里做错了什么。

谢谢。

2 个答案:

答案 0 :(得分:0)

for (i = 0; i <arrayLength; i++)
        putchar(output[i]);

i由 for 初始化,但是在

while (i < arrayLength){

        putchar(output[i]);
        i++;
    }

i 不会在while之前初始化,可能其值为> arrayLength,所以 while 永远不会执行其主体,只需在前面添加i = 0; while


(编辑)

您说您在某个地方之前用0初始化 i ,是否在 while 之后写一个\n刷新输出?

答案 1 :(得分:0)

之所以会发生这种情况,有很多可能的原因,原因还在于您在评论中进行了解释:

yes I have, right at the beginning I initialise it as i=0

请检查此代码,并告诉我们此代码与您的实际代码(通过不向我们显示的方式)有什么区别:

#include <stdio.h>
#include <string.h>

int main ( void )
{
    char output[] = "ABCDEFG";
    size_t i = 0, j = 0;
    size_t arrayLength = strlen( output );

    for ( i = 0 ; i < arrayLength ; i++ )
    {
        putchar(output[i]);
    }
    printf( "\n" );

    j = 0;
    while ( j < arrayLength )
    {

        putchar( output[j] );
        j++;
    }
}

您应该提供一个可以对其进行测试的代码。

您是否在同一代码中运行两个LOOP? 像这样:

#include <stdio.h>
#include <string.h>

int main ( void )
{
    char output[] = "ABCDEFG";
    size_t i = 0;
    size_t arrayLength = strlen( output );

    for ( i = 0 ; i < arrayLength ; i++ )
    {
        putchar(output[i]);
    }
    printf( "\n" );

    while ( i < arrayLength )
    {

        putchar( output[i] );
        i++;
    }
}