【问题标题】:Using Visual Studio 2010, how do I provide input to a Visual C++ Win32 Console Application?使用 Visual Studio 2010,如何向 Visual C++ Win32 控制台应用程序提供输入?
【发布时间】:2010-09-20 19:22:15
【问题描述】:

我正在使用 Visual Studio 2010 Pro 进行简单的 C 编程,我想知道如何在无需手动操作的情况下为程序提供输入。我习惯工作的环境是您的标准命令行 Unix 环境。一旦我编译了一个 C 文件调用“inputsInts”,它就变成了“a.out”,为了测试输入,我会输入:

简单的方法

回声 1 2 3 4| ./a.out //提供输入 输入的整数个数为 4 //输出

更简单的方法

更多输入.txt| ./a.out //提供输入 输入的整数个数为 4 //输出

繁琐的方式

./a.out //现在我要手动输入 1 2 3 4 s //在这种情况下,我必须输入一个字母才能继续 输入的整数个数为 4 //输出

在 Visual Studio 2010 中我必须这样做。我希望能够提前在一个区域中输入输入,或者至少让它读取一个文本文件。显然我无法通过手动输入来测试大量数据。目前我只是在 VS2010 中进行编码并进入 unix 环境进行大多数测试。我想留在 VS2010 环境中,直到我准备好在 Unix 中进行最终测试。

自从我第一次发布以来,我已经对这个问题进行了相当多的修改,所以最初的答案可能看起来有点不对劲。再次感谢大家的时间和帮助。

这只是示例的简单代码: #包括

int main ()  {
    int x, n = 0;
    while (scanf("%d", &x)==1)
        n++;
    printf("The number of ints input was %d\n", n);
    return(0);
}

【问题讨论】:

    标签: c windows visual-studio-2010 unix


    【解决方案1】:

    当您启动一个新的 Visual Studio 项目时,您需要创建一个“控制台应用程序”。这将为您提供一个从 Windows 命令提示符窗口运行的程序,也就是在其下运行的 shell 程序的名称之后称为Cmd 窗口。 Windows XP中命令窗口位于Programs->Accessories下,其他版本的Windows不确定。打开命令窗口后,一切将与您在 Linux 上的习惯类似。

    cd MyProject
    echo 1 2 3 4|.\MyProject.exe
    MyProject.exe <input.txt
    

    【讨论】:

      【解决方案2】:

      cmd.exe shell 有一个管道操作符,其工作方式类似于 Unix 管道操作符。它在某些版本的 Windows 中有一些怪癖,但总的来说,您应该能够用它做许多相同的事情。

      【讨论】:

        【解决方案3】:

        您可以在 Windows 命令行中以几乎相同的方式运行程序,唯一明显的区别是您需要指定正确的可执行文件名称而不是 a.out

        要在 VS IDE 中进行大致相同的操作,您可能需要将示例输入存储在文本文件中,然后在项目的调试设置中指定 &lt; sample.txt 之类的参数作为提供给程序的参数.

        【讨论】:

        • 我相信这更接近我正在寻找的东西。我通过项目属性(Alt+F7)找到了一个区域,在配置属性下单击调试,右侧有命令参数。我在此处输入“1 2 3 4”之类的纯文本并将其定向到文本文件,但似乎没有任何变化。
        【解决方案4】:

        在 Windows Shell (cmd.exe) 中,您可以使用类似于 linux 的管道来执行命令,例如

        dir|more
        

        在 shell 之外,您谈论的是 GUI 环境(如在 Linux 的 GUI 中),因此将信息从一个程序传递到下一个程序会有点不同。

        但是,您可以使用管道(Windows 中的共享内存)实现类似的功能。有关 Microsoft 开发人员网络人员示例的完整说明,请参见此处:
        http://msdn.microsoft.com/en-us/library/aa365780%28v=VS.85%29.aspx

        或者,如果您懒得四处寻找,这里有一个命名管道上的事务示例: http://msdn.microsoft.com/en-us/library/aa365789%28v=VS.85%29.aspx

        ...或者您可以简单地转储并从输出文件中读取。

        (这两种方法都类似于用于 Linux 程序的方法)

        有关您的特定需求的更多信息会有所帮助。

        【讨论】:

        • 酷,不知道我可以在 cmd.exe 中使用管道,除非我使用的是 powershell 之类的东西。
        猜你喜欢
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多