0

为什么我无法输入任何内容?正在运行的程序不会等待我的输入,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;
        }

我究竟做错了什么?

4

3 回答 3

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;
  }
于 2011-11-05T17:19:35.860 回答
0

尝试在不调试的情况下运行您的程序(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 个字符。

于 2011-11-05T16:58:20.510 回答
0

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

于 2011-11-05T16:18:13.470 回答