如何将控制台输出写入文本文件

时间:2014-06-03 13:50:24

标签: c textwriter key-generator

我在C中创建了这个密钥生成算法,它将在控制台中显示所有生成的密钥:

那么如何将写入控制台的所有密钥保存到文本文件中呢?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

static const char alphabet[] = "abcdefghijklmnopqrs";               
static const int alphabet_size = sizeof(alphabet) - 1;

void brute_impl(char * str, int index, int max_depth)
{
    int i;
    for (i = 0; i < alphabet_size; ++i)
    {
        str[index] = alphabet[i];

        if (index == max_depth - 1)
        {   
            printf("%s\n", str); // put check() here instead                     
        }
        else
        {
            brute_impl(str, index + 1, max_depth);
        }
    }
}

void brute_sequential(int max_len)
{
    char * buf = malloc(max_len + 1);
    int i;

    for (i = 8; i <= max_len; ++i)
    {
    memset(buf, 0, max_len + 1);
    brute_impl(buf, 0, i);
    }
    free(buf);
}

int main(void)
{
    brute_sequential(8);
    return 0;
}

2 个答案:

答案 0 :(得分:7)

专业方式:

在代码开头使用以下代码

freopen("output.txt","w",stdout);

另一种直观的方式:

在Windows中,一旦编译了C代码,它就会生成一个.exe文件(比如说是dummy.exe)。

现在将这个exe文件生成的输出保存到外部txt文件(比如说是out.txt),你需要做的就是通过CMD浏览到那个exe文件并输入

dummy.exe > out.txt

如果您有任何要检查的输入,请使用

dummy.exe <input.txt> out.txt

答案 1 :(得分:3)

您可以使用重定向windows)和(*nix)将任何语言的任何程序的控制台输出发送到文本文件:

# to overwrite an existing file:
./my_program.a > my_outfile.txt

# or to append
./my_program.a >> my_outfile.txt