我有一个长数组position
,并将其作为单个列写入,我可以执行以下操作:
FILE *f = fopen("testing.txt", "w");
for (i=0; i<18; i++){
fprintf(f,"%d\n",position[i]);
}
输出(在testing.txt中)如:
1
3
3
5
6
7
0
37
8
34
5
3
5
6
3
1
7
8
如何打印到文件:
1 7 5 1
3 0 3 7
3 37 5 8
5 8 6
6 34 3
因为多列的最大长度为5?
答案 0 :(得分:2)
#include <stdio.h>
int main(void){
int pos[] = {
1,3,3,5,6,
7,0,37,8,34,
5,3,5,6,3,
1,7,8
};
int len = sizeof(pos)/sizeof(*pos);
int col_len = 5;
for(int i = 0; i < col_len; ++i){
for(int j = i; j < len; j += col_len){
printf("%2d ", pos[j]);//fprintf(f, "%2d ", pos[j])
}
puts("");
}
}
答案 1 :(得分:0)
你的输出有点奇怪,你在第一和第二行有4个元素,在第三和第四行有三个元素。 通常,要保持在同一行,您可以打印“”或“\ t” - 标签
printf("%d ", 1);
printf("%d", 2);
或
printf("%d\t", 1);
printf("%d", 2);
当您需要制作新行时,请使用'\ n'(就像您正在使用的那样) 您必须知道在每个特定行中需要多少元素才能强制执行'\ n'
答案 2 :(得分:0)
原始代码
FILE *f = fopen("testing.txt", "w");
for (i=0; i<18; i++){
fprintf(f,"%d\n",position[i]);
}
我对您的请求的猜测,如果我理解正确的话,就像这样:
#include <stdio.h>
#include <stdlib.h>
int main (){
int v[18] = {1,3,3,5,6,7,0,37,8,34,5,3,5,6,3,1,7,8};
int i = 0, adder = 0, done = 0;
while (1){
if (done == 19)
break;
done++;
if (i <= 18){
printf("%d ", v[i]);
i = i+5;
}
if (i > 18){
printf("\n");
adder++;
i = adder;
}
}
}
您可以自己添加文件。如果你想要一个解释,基本上我所做的是认为我们只有你的18个元素,虽然我没有完成所有这些,我每次打印其中一个,我打算当我打印它们时,我确保打印从5到5,这样就是矩阵形式。
答案 3 :(得分:0)
fprintf(f,"%d %d...%d\n",position[i],position[i+1]...position[i+n-1]);
但请先修复循环