Как вывести массив char с помощью while и putchar - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть цикл for для вывода массива, но я хотел бы переписать его с помощью цикла while.

У меня есть следующее для цикла, который отлично работает:

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

и яЯ пытался переписать код выше в цикле while:


while (i < arrayLength){

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

Проблема в том, что когда я запускаю код с циклом while, я не получаю вывод, но программа завершается

, когдаЯ запускаю его с помощью цикла for, получаю ожидаемый результат:

defghi

Что я здесь не так сделал.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Существует множество возможных причин, по которым происходит нечто подобное, более того, потому что вы объяснили в своем комментарии:

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++;
    }
}

?

0 голосов
/ 17 апреля 2019

в

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

i инициализируется для , но в

while (i < arrayLength){

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

i не инициализируется раньшевероятно, его значение равно > arrayLength, поэтому , в то время как никогда не выполняет его тело, просто добавьте i = 0; перед , в то время как


(править)

Вы говорите, что инициализируете i с 0 где-то раньше, вы очищаете вывод, записывая \n после , в то время как ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...