代码块重定向输入输出

我是代码块的新手,我似乎无法使用输出的命令行参数。 有谁知道怎么做?

我现在能够读取从argv [1]传递的文件但是,程序不会自动读取给定文件的输入,也不会将输出正确输出到文件输出。

我知道它是在set程序的参数上,我的参数行是:list.txt output

经过一些研究,我看到一个人这样做: ./output,好像在运行一个程序给出输入和输出,无论如何,我也尝试过无济于事。 我是否需要使用文件处理程序与之交互? 它没有成功,简单的getchar()应该从传递的输入文件中读取。

我在这里想念的是什么?

提前致谢

我在CB 13.12中找到了一种方法

 Tools -> Configure Tools -> Add: Name: whatever Executable: C:\Windows\System32\cmd.exe Parameters: /C ${TARGET_OUTPUT_BASENAME} exampleArg1  

它基本上启动了Windows控制台并将参数传递给它。 您还可以为这些工具指定键盘快捷键。 我能看到的唯一缺点是工具不是特定于项目的。

我一直在使用Code :: Blocks一段时间了,最​​近才注意到至少与Windows中的Code :: Blocks 12.11相同。 重定向><项目中不起作用– >设置程序参数…

一个hackish解决方案是在构建后步骤中执行。

右键单击project name -> Build options... -> Pre/post build steps -> Post-build steps:

 cmd /C cd /D "bin\$(TARGET_NAME)\" & YourApplicationNameHere.exe >output.txt 2>errors.txt 

并选中“始终执行”复选框,即使目标是最新的。 现在按Ctrl + F9 ,程序作为构建过程的最后一步执行。

我认为这是cb_console_runner.exe的问题,它在IDE中启动您的程序。 ConsoleRunner无法解释重定向符号。 所以,我在代码块13.12的原始代码中添加了一些代码。 请将链接文件复制到[cb文件夹]。 (不要忘记备份原件。)

二进制文件: http : //limity.tistory.com/attachment/cfile30.uf@241A8D485621595131B28F.exe

源代码: http : //limity.tistory.com/attachment/cfile23.uf@231AF3485621595232A632.cpp

通过在项目菜单中设置程序参数,我能够将输入重定向到我的c程序。

导航到Top Menu>Project>Set programs' arguments并将 notice < in start it tricks codeblocks重定向到重定向文件而不是传递参数。

在此处输入图像描述

我知道这是一个古老的话题,但没有一个解决方案足够好。 对于Windows,我可能会在全局范围内使用以下宏定义(因为您可能还需要它用于调试打印或类似)

 #include  #ifdef DEBUG #define D(X) X #else #define D(X) #endif 

然后作为第一行或第二行(如果你需要std :: ios :: sync_with_stdio(false);)在主要使用它作为

 int main() { D(freopen("input.txt","r",stdin);) D(freopen("ouput.txt","w",stdout);) ... 

并在Projects :: Build Options …>(Debug,Compiler Settings,#define)下的Code :: Blocks中定义

DEBUG

期望“input.txt”是其余.c或.cpp文件所在的文件夹中的文本输入文件,“output.txt”将是在同一文件夹中生成的输出文件(或者它们都可以添加将项目作为此类文件以便于编辑/查看)。

此解决方案适用于cin / cout和scanf / printf。

我尝试了几乎所有选项并且无法使其工作:P在厌倦了所有这些之后,我基本上使用文件处理来完成我的工作(phew)

这是我在代码中所做的

在全球范围内,我写道:

 #define DEBUG #ifdef DEBUG #include ifstream Inputfile; ofstream Outputfile; #define cin Inputfile #define cout Outputfile #endif //#ifdef DEBUG 

在主要方面,我在做其他事之前写了以下内容:

 int main(){ #ifdef DEBUG Inputfile.open("Input.txt"); Outputfile.open("Output.txt");; #endif // #ifdef DEBUG 

最后在关闭主流程之前就这样做了:

 #ifdef DEBUG Inputfile.close(); Outputfile.close(); #endif // #ifdef DEBUG 

之后添加了两个文件

INPUT.TXT

output.txt的

到项目

这按预期工作