C:将文件写入多个列

时间:2017-04-11 22:46:24

标签: c

我有一个长数组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?

4 个答案:

答案 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]);

但请先修复循环