我正在尝试执行以下操作:
在文本文件中打开一个up
到1000
个整数的文件,每行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;
}
答案 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");