无法在文件中显示数组的内容

时间:2017-01-27 10:58:41

标签: c file

首先,我正在执行以下操作,以在我的控制台和特定文件中显示随机和唯一的数字:

        for (y = 0; y < 10; y++) {
            printf("unique random number is %d\n", array[y]);
            fprintf(fp, "unique random number is %d\n", array[y]);

接下来,我使用以下代码显示一个数组的内容,该数组包含前面生成的数字的二进制表示。

for (loop1 = loop; loop1 > -1; loop1--)
                printf("%d", arr[loop1]);
                printf("\n");

然后我使用:fprintf(fp, "%d", arr[loop1]);将这些内容打印在我选择的文件中。

由于二进制表示没有打印出来,我在上一段代码中做错了什么?任何建议将不胜感激。

**编辑:**

for (y = 0; y < 10; y++) {
            printf("unique random number is %d\n", array[y]);
            fprintf(fp, "unique random number is %d\n", array[y]);
            value = array[y];

            for (loop = 0; loop < 1000; loop++)
            {
                if (value <= 1) { arr[loop] = 1; break; }       //if value is 1 after dividing put 1 in array
                if (value % 2 == 0) arr[loop] = 0;
                else arr[loop] = 1;

                value = value / 2;
            }
            for (loop1 = loop; loop1 > -1; loop1--)
                printf("%d", arr[loop1]);
                printf("\n");
                fprintf(fp, "%d", arr[loop1]);                      
        }           

2 个答案:

答案 0 :(得分:0)

在写入文件时,文件是完全缓冲的。因此,您必须在写入后刷新缓冲区。更改您的代码以写入如下文件。

for (y = 0; y < 10; y++) {
    printf("unique random number is %d\n", array[y]);
    fprintf(fp, "unique random number is %d\n", array[y]);
    fflush(fp);
}

刷新缓冲区后,只会将内容写入文件。

我希望它能解决你的问题

答案 1 :(得分:0)

这段代码不正确:

        for (loop1 = loop; loop1 > -1; loop1--)
            printf("%d", arr[loop1]);
            printf("\n");
            fprintf(fp, "%d", arr[loop1]);                      

注意块{ }的缺席?这意味着for循环仅包含第一个语句。代码等同于:

        for (loop1 = loop; loop1 > -1; loop1--) {
            printf("%d", arr[loop1]);
        }
        printf("\n");
        fprintf(fp, "%d", arr[loop1]);

这意味着您将arr[-1]打印到文件(=未定义的行为!!!)。

要将相同的内容打印到file和stdout,您可能需要这样:

        for (loop1 = loop; loop1 > -1; loop1--) {
            printf("%d", arr[loop1]);
            fprintf(fp, "%d", arr[loop1]);
        }
        printf("\n");
        fprintf(fp, "\n");