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

时间:2015-02-11 23:19:45

标签: c malloc

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

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

逐行阅读文件

将int存储在动态分配的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;

}

1 个答案:

答案 0 :(得分:2)

您的代码将缓冲区地址放在整数数组中,然后将其用作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");