在C中生成随机数并将其写入文本文件

时间:2016-06-03 11:44:09

标签: c file random writing

所以我创建了一个项目,从文本文件中读取数字并绘制它的等轴投影,但现在我正在尝试创建一个程序,生成0-9的数字并将它们写入文档。这是我的代码看起来像,但文档仍然是空的。我假设错误是在我的rand()函数用法中,或者当我将整数转换为字符时。

提前感谢所有输入,如果只是操作员错误,我道歉。我对这些东西很新:

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

int     main(void)
{
    char    str[10];
    FILE    *fptr;
    int     i;
    int     num;
    char    num2;
    i = 0;

    fptr = fopen("map.fdf", "w");
    if (fptr == NULL)
    {
        printf("ERROR Creating File!");
        exit(1);
    }
    while (str[i] != '\0')
    {
        num = rand() % 10;
        num2 = num + '0';
        str[i] = num2;
        i += 1;
    }
    puts(str);
    fprintf(fptr,"%s", str);
    fclose(fptr);
    return (0);
}

3 个答案:

答案 0 :(得分:3)

我不理解你的while循环,它似乎等待某些条件,它不包含要发生的代码。

无论如何,如何不重新发明如何将单位数整数转换为字符,而是使用更高级别的I / O函数来打印到文件?毕竟,这就是他们在那里的原因。 :)

for (int i = 0; i < 10; ++i)
{
  fprintf(fptr, "%d", rand() % 10);
}
fprintf(fptr, "\n");  /* Probably nice to make it a line. */

如果你真的必须没有for,你当然可以手动将其转换为while循环:

int i = 0;
while(i++ < 10)
{
  fprintf(fptr, "%d", rand() % 10);
}

答案 1 :(得分:2)

你的&#34; str&#34;是未初始化的,但显然有一个&#39; \ 0&#39;字符作为它的第一个元素,因此while循环不会执行。

答案 2 :(得分:0)

所以我今天在文件处理中得到了分配偶数、奇数和质数到不同文件的任务,我还决定用随机数创建输入文件。我也遇到了和你类似的问题。对不起,我迟到了 5 年。

FILE *fn;
int num,n,range;

printf("Enter number of positive integer:");
scanf("%d",&n);
printf("Enter max integer:");
scanf("%d",&range);

fn=fopen("number.txt","w");
for (int i=0;i<n;++i) {
    num=(rand()%range)+1;
    fprintf(fn,"%d\n",num);
}
fclose(fn);