C语言自定义一个大的数据文件里面包括很多大的整数
时间: 2024-03-23 12:37:56 浏览: 14
好的,下面是一个简单的 C 语言程序,可以自定义一个大的数据文件,该文件里面包括很多大的整数。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_DIGITS 1000 // 定义最大的数字位数
#define MAX_NUMBER 1000 // 定义最大的数字个数
#define MAX_LINE_LENGTH 80 // 定义每行最大的字符数
#define FILE_NAME "data.txt" // 定义文件名
int main() {
int i, j, k;
int number[MAX_NUMBER][MAX_DIGITS]; // 存储所有的数字
int digits[MAX_NUMBER]; // 存储每个数字的位数
int n; // 数字的个数
FILE *fp;
// 生成随机数
srand((unsigned)time(NULL));
n = rand() % MAX_NUMBER + 1; // 随机生成数字的个数
for (i = 0; i < n; i++) {
digits[i] = rand() % MAX_DIGITS + 1; // 随机生成数字的位数
for (j = 0; j < digits[i]; j++) {
number[i][j] = rand() % 10; // 随机生成数字的每一位
}
}
// 写入文件
fp = fopen(FILE_NAME, "w");
if (fp == NULL) {
printf("无法打开文件 %s\n", FILE_NAME);
return 1;
}
for (i = 0; i < n; i++) {
fprintf(fp, "%d ", digits[i]); // 先写入数字的位数
for (j = 0, k = 0; j < digits[i]; j++, k++) {
fprintf(fp, "%d", number[i][j]); // 写入数字的每一位
if (k == MAX_LINE_LENGTH - 1) { // 每行最多只能有 MAX_LINE_LENGTH 个字符
fprintf(fp, "\n"); // 换行
k = -1; // 因为下面还有 k++,所以这里赋值为 -1
}
}
fprintf(fp, "\n");
}
fclose(fp);
printf("已生成 %s,数字的个数为 %d\n", FILE_NAME, n);
return 0;
}
```
以上程序会生成一个名为 data.txt 的文件,该文件的每行表示一个数字,第一个数字为该数字的位数,后面跟着该数字的每一位。每个数字的每一位之间没有空格,但是每行最多只能有 MAX_LINE_LENGTH 个字符,如果超过了这个限制,程序会自动换行。比如,文件内容可能如下所示:
```
134 548365018049126739056204169763734032516574327142278448319420368779...
247 719312046108108510663485716154334286266297373005597989292912249223...
80 4019005752552533330496017658242422358180125411421548584465076082459...
```
其中,第一行表示一个 134 位数,后面的数字为该数字的每一位,以此类推。