代码块重定向输入输出

时间:2012-11-08 18:59:02

标签: c redirect input codeblocks output

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

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

我知道它在set程序的参数上,我的参数行是:list.txt<输入>输出

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

我在这里缺少什么?

提前致谢

6 个答案:

答案 0 :(得分:7)

我在CB 13.12

中找到了一种方法
Tools -> Configure Tools -> Add:

Name: whatever
Executable: C:\Windows\System32\cmd.exe
Parameters: /C ${TARGET_OUTPUT_BASENAME} exampleArg1 <inputFileRedirect.txt
Working Directory: ${TARGET_OUTPUT_DIR}

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

答案 1 :(得分:5)

我一直在使用Code :: Blocks已经有一段时间了,最​​近才注意到至少与Windows中的Code :: Blocks 12.11相同。重定向&gt; &lt; 项目 - &gt;中不起作用设置程序参数......

一个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 ,程序将作为构建过程的最后一步执行。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

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

导航到Top Menu>Project>Set programs' arguments并将</absolute/path/to/yourinputfile通知<置于启动状态,将代码块强制重定向到重定向文件而不是传递参数。

enter image description here

答案 4 :(得分:1)

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

#include <cstdio>
#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);)
   ...

在项目&gt;下的Code :: Blocks中定义构建选项...&gt; (调试,编译器设置,#define)

  

DEBUG

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

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

答案 5 :(得分:0)

我尝试了几乎所有选项&amp;没能成功:P 在厌倦了这一切之后,我基本上使用文件处理来完成我的工作(phew)

这是我在代码中所做的事情

在全球范围内,我写道:

#define DEBUG

#ifdef DEBUG
#include<fstream>

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的

到项目

这按预期工作