странное поведение в визуальном с - PullRequest
0 голосов
/ 16 августа 2010

эта программа зависает после получения первого аргумента: -

#include <stdio.h>
#include <conio.h>
void ellip(char*,...);
int main(int argc,char* argv[]){
    printf("a");
    ellip("first argument",99,"second arg","thirdarg");
    _getch();
return 0;
}
void ellip(char* m,...)
{   char com='c';
    for(;;)
        {   
            auto g=0;
            while(com=='c')
            {

                printf("%d\nMatched Continue:-",g++);
                scanf("%c",&com);


            }
        }
}

, в то время как та же программа с тонкой модификацией (добавление пробела)

scanf("%c ",&com);

Работает отлично!

Это какая-то ошибка в vc или проблема на моем компьютере?

1 Ответ

5 голосов
/ 16 августа 2010

Когда новая строка считывается из stdin и помещается в com, тогда com теперь равно '\n', и цикл for(;;) будет повторяться бесконечно, а while(com=='c') никогда не будет введен.

scanf("%c ",&com); устраняет проблему, поскольку пробел заставит scanf пропустить все пробелы.

См. Статью MSDN .Первая точка пули объясняет, что делает космический персонаж.

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