如何生成一个大的txt文件 [英] How to Generate an big txt file

查看:212
本文介绍了如何生成一个大的txt文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好。我想问一下是否有办法在一行中生成一个包含1.000.000个不同数字的txt文件。



有没有办法做到这一点?我同时使用linux和windows机器,但我更喜欢使用C程序代码。

Hello guys. I want to ask if there is a way to generate a txt file that contains 1.000.000 different numbers all in one line.

Is there a way to do it? I use both linux and windows machines but I prefer to use a C program code.

推荐答案

如果你想使用 C ,这可能对你有用;

If you want to use C, something like this might work for you;
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char* append_char(char* buffer, char character) {
    *buffer = character;
    return ++buffer;
}

char* append_number(char* buffer, int number, char* temp_buffer) {
    char* target = buffer;
    char* source = temp_buffer;
    char* p;
    itoa(number, temp_buffer, 10);
    for (p = source; *p != 0; ++p) {
        *target = *p;
        ++target;
    }
    return target;
}

int main(int argc, char* argv[]) {
    // Max int is 4294967295, add one for a 
    // possible minus sign, add one for the space delimiter
    int number_max_characters = 10 + 1 + 1;
    int count_to_generate = 10; // This the number of numbers you want
    char* temp_buffer = (char*)malloc(number_max_characters);
    // Allocate space for all the numbers plus one for the "header",
    // plus space for the line-break after the header and a trailing zero
    // Note that buffer is potentially too big here, will fix that by copying 
    // only what we need into result, and freeing buffer
    char* buffer = (char*)malloc((count_to_generate + 1) * number_max_characters + 2 + 1);
    char* result;
    char* p = buffer;
    int i;
    FILE* fp;

    // Append header and line break
    p = append_char(append_char(append_number(p, count_to_generate, temp_buffer), '\r'), '\n');
    for (i = 0; i < count_to_generate; ++i) {
        p = append_number(p, i, temp_buffer);
        if (i < count_to_generate - 1)
            p = append_char(p, ' ');
    }

    *p = 0; // Null terminate

    // Take the used size of buffer, allocate that to result...
    result = (char*)malloc((int)p - (int)buffer);
    // ...and copy over to result
    strcpy(result, buffer);
    free(buffer); // We're done with this one now

    printf("%s", result);

    fp = fopen("c:\\temp\\test.txt", "w");
    fprintf(fp, "%s", result);
    fclose(fp);

    return 0;
}



希望这会有所帮助,

Fredrik


Hope this helps,
Fredrik


比Fredrik的解决方案稍微简单一些:

Slightly simpler than Fredrik's solution:
#define MAXIMUM 10//00000

int main
{
    FILE* fp;
    int count, number;
    char szNumber[16];
    
    fp = fopen("testfile.txt", "w");
    for (count = 1; count <= MAXIMUM; ++count)
    {
        number = 10 + count;
        sprintf(szNumber, "%d", number);
        fputs(szNumber, fp);
        if (count < MAXIMUM)
            fputs(",", fp);
    }
    fclose(fp);
}


这篇关于如何生成一个大的txt文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆