如何生成一个大的txt文件 [英] How to Generate an big txt file
本文介绍了如何生成一个大的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屋!
查看全文