7

我是代码块的新手,我似乎无法让它与 < input > 输出的命令行参数一起工作。有谁知道怎么做?

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

我知道它在设置程序的参数上,我的参数行是:list.txt < input > output

经过一番研究,我看到一个人这样做:< ./input > ./output,似乎运行一个程序来提供输入和输出,无论如何,我也试过无济于事。我需要使用文件处理程序与之交互吗?它没有意义,简单的 getchar() 应该从传递的输入文件中读取。

我在这里想念什么?

提前致谢

4

6 回答 6

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 控制台并将参数传递给它。您还可以为这些工具分配键盘快捷键。我能看到的唯一缺点是这些工具不是特定于项目的。

于 2014-10-10T18:35:14.890 回答
5

我已经使用 Code::Blocks 一段时间了,最​​近我注意到至少在 Windows 中的 Code::Blocks 12.11 也是如此。重定向><在项目中不起作用-> 设置程序参数...

一个骇人听闻的解决方案是在构建后步骤中执行。

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

于 2013-08-13T13:09:03.370 回答
1

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

导航到Top Menu>Project>Set programs' arguments并在 start 中放置</absolute/path/to/yourinputfile通知<,它会将代码块欺骗到重定向文件而不是传递参数。

在此处输入图像描述

于 2015-11-20T18:14:17.020 回答
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);)
   ...

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

调试

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

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

于 2017-01-30T23:02:01.763 回答
1

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

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

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

于 2015-10-16T20:10:47.453 回答
0

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

这是我在代码中所做的

在全球范围内,我写道:

#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

在此之后添加了两个文件

输入.txt

&

输出.txt

到项目

这按预期工作

于 2016-05-26T04:56:50.263 回答