在单行上打印动态分配的整数数组
Print dynamically allocated array of integers on single line
我正在尝试执行以下操作:
打开文本文件中包含 up
到 1000
整数的文件,每行 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");
我正在尝试执行以下操作:
打开文本文件中包含 up
到 1000
整数的文件,每行 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");