我正在使用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);
}
答案 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程序使用的方法类似)
有关您的特定需求的更多信息会有所帮助。