在单行上打印动态分配的整数数组

Print dynamically allocated array of integers on single line

我正在尝试执行以下操作:

打开文本文件中包含 up1000 整数的文件,每行 1 个整数。

逐行读取文件

将整数存储在动态分配的 1000 数组中

在一行中打印数组的内容

是的,这是作业,我卡在了这个上面。

Output should be: $ 1 2 3 4 5 6 7 8 9 ....

到目前为止,我在每次迭代后都在新行上打印整数。

    int x = 0;
    char buf[1000];
    int  *array = (int *) malloc(1000 * sizeof(int));
    FILE *fp = fopen("test.txt", "r");

    while(fgets(buf, 1000, fp) != NULL) {
            array[x] = buf;
            printf("%s ", array[x]);
            x++;
    }       
    fclose(fp);
    return 0;

}

您的代码将缓冲区地址放在整数数组中,然后将其用作 printf() 的字符串指针,但如果您尝试在单独的循环中打印数组,您会发现它不起作用从读取循环中,因为数组的每个元素都拥有相同的缓冲区地址。您应该已经收到有关此的编译器警告。

这个答案使用了两个循环,因为你想在读取数字后打印出来。

while(fgets(buf, 1000, fp) != NULL && x < 1000)
    array[x++] = atoi(buf);

for (y=0; y<x; y++)
    printf("%d ", array[y]);

printf("\n");