如何让这段文字保持一致?

问题描述 投票:0回答:1

我正在尝试显示一行数据,我想整齐地显示数据。我使用了,但是使用 tab 不一致:
电流输出(大约):

Location           City                     Price          Rooms   Bathrooms       Carpark         Type              Furnish
Mont-Kiara       Kuala-Lumpur    1000000                   2            2        0         Built-up                  Partly
Cheras   Kuala-Lumpur    310000                  3            2            0        Built-up         Partly

我当前的代码:

#include <stdio.h>
#include <string.h>

struct data_struct {
    char location[150];
    char city[150];
    long long int prices;
    int rooms;
    int bathroom;
    int carpark;
    char type[150];
    char furnish[150];
} data[5000];

void data_read(FILE *file) {
    char location[150];
    char city[150];
    long long int prices;
    int rooms;
    int bathroom;
    int carpark;
    char type[150];
    char furnish[150];
    
    char header[1000];
    fscanf(file, "%[^\n]\n", header);
    int i = 0;
    while(fscanf(file, "%[^,],%[^,],%lld,%d,%d,%d,%[^,],%[^\n]\n", location, city, &prices, &rooms, &bathroom, &carpark, type, furnish) == 8) {
        strcpy(data[i].location, location);
        strcpy(data[i].city, city);
        data[i].prices = prices;
        data[i].rooms = rooms;
        data[i].bathroom = bathroom;
        data[i].carpark = carpark;
        strcpy(data[i].type, type);
        strcpy(data[i].furnish, furnish);
        i = i + 1;
    }
}

void display_data(int row) {
    printf("Location \t City \t\t Price \t Rooms \t Bathrooms \t Carpark \t Type \t Furnish\n");
    for(int i = 0; i < row; i++) {
        printf("%s \t %s \t %lld \t %d \t %d \t %d \t %s \t %s\n", data[i].location, data[i].city, data[i].prices, data[i].rooms, data[i].bathroom, data[i].carpark, data[i].type, data[i].furnish);
    }
}

int main() {
    
        FILE *file = fopen("file(in).csv", "r");
        data_read(file);
        
        int t;
        scanf("%d", &t);

        display_data(t);
        
        return 0;
}    

我尝试在网上寻找解决方案,但没有找到任何有用的东西。有没有办法让它在C中看起来像这样?

预期的输出看起来像这样(没有边框):

地点 城市 价格 房间 浴室 停车场 类型 提供
满家乐 吉隆坡-吉隆坡 1000000 2 2 0 已建成 部分
蕉赖 吉隆坡-吉隆坡 310000 3 2 0 已建成 部分
c multiple-columns padding
1个回答
0
投票

尽管没有要打印的文件的内容,但很明显,这里的答案是使用宽度字段和

%s
格式说明符 来确保对齐。

例如

printf("%-8s %-8s %-8s\n", "A", "B", "C");
printf("%-8d %-8d %-8d\n", 42, 56, 896);

打印:

A        B        C
42       56       896

或者也许:

printf("%-8s %-8s %-8s\n", "A", "B", "C");
printf("%8d %8d %8d\n", 42, 56, 896);
printf("%8.2f %8.2f %8d\n", 3.14, 9.23454, 7);
A        B        C
      42       56      896
    3.14     9.23        7
© www.soinside.com 2019 - 2024. All rights reserved.