为什么我无法输入任何内容?运行程序不等待我的输入,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;
}
我做错了什么?
答案 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个字符。