我有一个非常基本的想法,我想要实现但不知何故我的逻辑不是最好的,因为代码不能按我的意愿工作。
我希望在屏幕/文本文件中写入数字,以便在20次重复之后有新的行将它们分开。
请看一下。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * File = fopen("NUMBERS.txt", "w");
int *a;
int n;
int i;
int j;
int r;
printf("How many numbers do you wish to enter?\n");
scanf("%d", &n);
a = malloc(n*sizeof(int*));
time_t t;
srand((unsigned)time(&t));
fprintf(File, "%d\n", n);
for(i = 0 ; i < n; i++)
{
r = rand() % 100;
a[i]= r;
printf("%d ", r);
fprintf(File, "%d ", r);
if(a[i] % 20 == 0)
{
printf("\n");
fprintf(File, "\n");
}
}
system("pause");
return 0;
}
让我们说用户输入(21或更高的数字)输出应该是:
21
67 24 8 10 27 83 7 89 99 40 69 5 69 12 66 92 99 16 37 22
42
答案 0 :(得分:2)
如果要在20次迭代后添加换行符,则需要检查迭代中使用的i
变量,而不是数组中第i个项的值,所以替换
if(a[i] % 20 == 0)
的 if(i % 20 == 0)
此外,内存分配不正确,如另一个答案(和评论)所述。