【问题标题】:Generating Random Numbers in C and writing it to a text file在 C 中生成随机数并将其写入文本文件
【发布时间】:2016-06-03 11:44:09
【问题描述】:

所以我创建了一个从文本文件中读取数字并绘制它的等距投影的项目,但现在我正在尝试创建一个程序来生成 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);
}

【问题讨论】:

    标签: c file random writing


    【解决方案1】:

    我不明白你的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);
    }
    

    【讨论】:

    • 感谢您的回答。 while 循环应该重复,直到它碰到应该是字符串结尾的 '\0' 字符,但正如 Hans 所提到的,它似乎在字符串的第一个字符处初始化 /0。 int i 用作字符串中当前字符的索引。我使用低级编程的原因是因为我们的课程中禁止使用 90% 的预制函数,包括 for 循环。再次感谢您的回答,如果我能正常工作,我会通知您!
    • 再次感谢,我在使用 while 循环时设法让它工作!
    【解决方案2】:

    您的“str”未初始化,但显然有一个 '\0' 字符作为它的第一个元素,因此不会执行 while 循环。

    【讨论】:

      【解决方案3】:

      所以我今天在文件处理中获得了将偶数、奇数和素数分开到不同文件的任务,我还决定使用随机数创建输入文件。我也面临与您类似的问题。对不起,我迟到了 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);
      

      【讨论】:

        猜你喜欢
        • 2021-02-15
        • 2021-06-02
        • 2016-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-12
        • 2012-10-17
        相关资源
        最近更新 更多