我有一个for循环来输出数组,但是想用while循环重写它。
我有以下for循环可以正常工作:
for (i = 0; i <arrayLength; i++)
putchar(output[i]);
并且我试图在while循环中重写上面的代码:
while (i < arrayLength){
putchar(output[i]);
i++;
}
问题是,当我使用while循环运行代码时,没有输出,但是程序结束了
当我使用for循环运行它时,我得到了预期的输出
defghi
我在这里做错了什么。
谢谢。
答案 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++;
}
}
?