命令提示符关闭而不接受输入

时间:2011-11-05 16:15:11

标签: c++ visual-studio-2008 cmd argv

为什么我无法输入任何内容?运行程序不等待我的输入,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 个答案:

答案 0 :(得分:2)

我猜是缓冲区里有东西。试着看看它是什么?

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

答案 1 :(得分:0)

你通常应该用换行结束而不是开始输出字符串(因为在stdout上换行符可以刷新缓冲区)。或者,您应在致电fflush(stdout);之前致电getch()。请尝试使用printf("Enter a filename:\n");

答案 2 :(得分:0)

尝试在不调试的情况下运行程序(Visual Studio中为Ctrl+F5)。这将在程序完成后保持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个字符。