fprintf - 每行打印特定数量的字符

时间:2011-02-27 05:59:46

标签: c

例如我有一些x,y坐标。 如何在屏幕上打印多个x,y,以便每行只有4个坐标。

因此,让我们说所有x和y在整个过程中都是相同的,我希望在x = 1和y = 2的情况下打印出来。

1 2 1 2 1 2 1 2
1 2 1 2 1 2 1 2
1 2 1 2 1 2 1 2
..............

fprintf中(?)

3 个答案:

答案 0 :(得分:0)

由于您每行只需要四个,所以只需执行以下操作:

printf("%d %d %d %d %d %d %d %d\n", x, y, x, y, x, y, x, y);

可以根据需要添加任意数量的行。

答案 1 :(得分:0)

假设你有这样的事情:

typedef struct point {
    int x;
    int y;
} point_t ;

#define NUM_OF_LINES 5
#define POINTS_PER_LINE 4

int main( void ) {
    point_t p[NUM_OF_LINES][POINTS_PER_LINE];

    //  fill points with valid data somehow

    // print points
    for (int i = 0; i != NUM_OF_LINES; i++) {
        for( int j = 0; j != POINTS_PER_LINE; j++ )
            printf("%d %d ", p[i][j].x, p[i][j].y);

        printf("\n");
    }

}

答案 2 :(得分:0)

for (int i=0; i<total_points; i++) {
    printf("%d %d", points[i].x, points[i].y);
    if (i % points_per_line == 0)
        printf("\n");
    else
        printf(" ");
}

...或者,如果你不介意某些人可能会认为有些“棘手”的代码:

static char seps[] = {'\n', ' '};

for (int i=0; i<total_points; i++)
    printf("%d %d%c", 
        points[i].x,
        points[i].y,
        seps[(i%points_per_line)==0]);

无论哪种方式,这些显然都假设某个点的正常定义,大概是:

typedef struct { 
    int x;
    int y;
} point;