使用Visual Studio 2010,如何为Visual C ++ Win32控制台应用程序提供输入?

时间:2010-09-20 19:22:15

标签: c windows visual-studio-2010 unix

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

简单方法

echo 1 2 3 4| ./a.out //to provide input
The number of ints input was 4 //output

更简单的方法

more input.txt| ./a.out //to provide input
The number of ints input was 4 //output

乏味的方式

./a.out
//now I would manually type
1 2 3 4 s //in this case I have to type a letter to move on
The number of ints input was 4 //output

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

自从我第一次发布以来,我已经对这个问题进行了相当多的改动,所以原来的答案可能看起来有些偏差。我再一次感谢每个人的时间和帮助。

这只是一个例子的简单代码:     #include

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

4 个答案:

答案 0 :(得分:1)

cmd.exe shell有一个管道运算符,其工作方式与Unix管道运算符类似。它在某些版本的Windows中有一些怪癖,但总的来说,你应该可以用它做很多相同的事情。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

启动新的Visual Studio项目时,需要创建“控制台应用程序”。这将为您提供一个程序,该程序从Windows命令提示符窗口运行,在其下面运行的shell程序的名称之后称为Cmd窗口。命令窗口位于Windows XP中的Programs - &gt; Accessories下,不确定其他版本的Windows。打开命令窗口后,事情将与您在Linux上使用的内容类似。

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

答案 3 :(得分:0)

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

之类的命令
dir|more

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

但是,您可以使用管道(Windows中的共享内存)实现类似功能。请参阅此处以获取完整说明,其中包含Microsoft Developer Network中的人员的示例:
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程序使用的方法类似)

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