Командная строка закрывается без ввода - PullRequest
0 голосов
/ 05 ноября 2011

Почему я не могу ничего ввести?Программа при запуске не ждет моего ввода, и cmd печатает Enter a Filename и закрывается.Я выполняю его в Visual Studio 2008.

int main(int argc, char* argv[])
    {
        if(argc<2)
            printf("\nEnter a filename");
        else
        { 
            //code
        }
        getch();
        return 0;
        }

Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2011

Я предполагаю, что что-то находится в буфере.Попробуйте посмотреть, что это такое?

int main(int argc, char* argv[])
{
    if(argc<2)
        printf("\nEnter a filename");
    else
    { 
        //code
    }

    while (true)
    {
        int c;
        c = getch();
        printf( ": %d\n", c );
    }
    return 0;
 }

После того, как ваш ответ кажется, в вашем потоке ввода есть буква b, когда вызывается ваша программа.Не уверен, как это объяснить.Вы пытаетесь получить целую строку, а не просто персонаж?

int main(int argc, char* argv[])
{
    char string [256];
    if(argc<2)
    {
        printf("Enter a filename:");
        gets (string);
    }
    else
    { 
        //assign string to argv[1]
    }


   printf ("Your filename is: %s\n",string);
   return 0;
  }
0 голосов
/ 05 ноября 2011

Попробуйте запустить вашу программу без отладки (Ctrl+F5 в Visual Studio).Это будет держать окно cmd открытым после завершения программы.

(правка) Возможно, вы захотите сделать что-то вроде этого:

int main(int argc, char* argv[])
    {
        string filename;
        if(argc<2)
        {
            printf("\nEnter a filename");
            cin >> filename;
        }
        else
        { 
            //code
        }
        // getch(); // Use Ctrl+F5 instead
        return 0;
    }

getch() получает только 1 символ из входного потока,

0 голосов
/ 05 ноября 2011

Вы должны обычно заканчивать, а не начинать, выведенную строку с новой строки (потому что на stdout новая строка может очищать буферы).Или вам следует позвонить fflush(stdout); до вашего звонка на getch().Так что попробуйте с printf("Enter a filename:\n");

...