首先,我正在执行以下操作,以在我的控制台和特定文件中显示随机和唯一的数字:
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]);
}
答案 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");