gpt4 book ai didi

c - 生成一个非常大的随机数并将其存储在字符串缓冲区中并将其写入文件

转载 作者:行者123 更新时间:2023-11-30 18:50:51 24 4
gpt4 key购买 nike

我正在编写一个 C 代码,它生成一个非常大的随机数(例如 50 位数字),然后将其存储在字符串缓冲区中并将其复制到文本文件中。请引用我为此编写的代码:

FILE *fp;
char first_num[MAX];
char second_num[MAX];
char *answer;
int i,test_cases,numbers;


fp = fopen("data.txt", "w+");
if(fp==NULL)
{
printf("Error opening file\n");
exit(1);
}
printf("How many number combinations you wish to enter?\n");
scanf("%d",&numbers);
for(i=0;i<(2*numbers);i++)
{
char buf1[50], *number;
number = rand() % 100000000000000000000000000000000000000000000000000000000000000000000000;
sprintf(buf1, "%s", number);
fprintf(fp,"%s",buf1);
}

fclose(fp);

但是我遇到浮点异常并且我的代码被转储。任何人都可以帮助我吗?实际上,一旦这些随机数作为字符串存储在文件中,我就会尝试将它们相乘。

最佳答案

char buf1[50], *number;
number = rand() % 100000000000000000000000000000000000000000000000000000000000000000000000;

首先,number 是一个char *rand 返回int。其次,由于 int 不能容纳超过 2 32 次方 - 1,因此使用如此大的数字 (10^ ???)是没用的。我建议查看this answer对于 64 位数字的可移植解决方案,但它仍然低于您尝试的值

编辑:第二个选项,使您能够生成任意大小的数字,可以是这样的:

  1. 创建一个大数组(位数)
  2. 生成随机数字 ( 0 <= x <= 9)
  3. 将此数字附加到数组
  4. 重复直到获得所需的位数

示例:

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

int main(void) {
time_t t;
int i = 0;
srand((unsigned) time(&t));

const int SIZE = 1500;
char num[SIZE];
for(i = 0; i < SIZE; i++)
num[i] = (char)(rand() % 10 + 48);
num[SIZE] = '\0';
printf("%s", num);
getchar();
}

关于c - 生成一个非常大的随机数并将其存储在字符串缓冲区中并将其写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com