for循环中的文本格式

时间:2016-04-08 20:35:05

标签: c printf

我有一个非常基本的想法,我想要实现但不知何故我的逻辑不是最好的,因为代码不能按我的意愿工作。

我希望在屏幕/文本文件中写入数字,以便在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

1 个答案:

答案 0 :(得分:2)

如果要在20次迭代后添加换行符,则需要检查迭代中使用的i变量,而不是数组中第i个项的值,所以替换

带有if(a[i] % 20 == 0)

if(i % 20 == 0)

此外,内存分配不正确,如另一个答案(和评论)所述。