2015-06-28 54 views
-1

我爲學生寫了一個小型數據庫。從終端獲取數據後,我想將這些數據打印在一張漂亮的表格中。此表看起來像:在linux終端裏打印一張漂亮的桌子

lastname|firstname|enrollement nr|subject|nationality. 

但我無法打印整行數據。這意味着如果我想打印關於一名學生的信息,數據將被分成兩行。表格的標題不會被拆分,但表格的每一行都會被拆分。下面是代碼:

void display_db(){ 
    printf("lastname|firstname|enrollement nr|subject |nationality\n"); 
    printf("========================================================\n"); 
    int i; 
    for(i=0;i<SIZE;i++){ 
     printf("%10s|%10s|%10d|%10s|%10s\n",   
      (db+i)->lastname,(db+i)->firstname,(db+i)->mNr, (db+i)->subject, (db+i)->nationality); 
    } 
} 

下面的圖片:

enter image description here

刪除特殊字符 '\ n' 之後,我修改了代碼打印表格。桌子現在很漂亮。下面是代碼:

void display_db(){ 
printf("%10s|%10s|%10s|%30s|%10s\n","lastname","firstname","enroll. nr","subject","nationality"); 
printf("========================================================\n"); 
int i; 
for(i=0;i<SIZE;i++){ 
printf("%10s|%10s|%10d|%30s|%10s\n",    
     (db+i)->lastname,(db+i)->firstname,(db+i)->mNr, (db+i)->subject, (db+i)->nationality); 
} 

}

+0

Aparently在'字符串(分貝+ I)拆下其後的換行符 - > subject'終止用換行符號。 – Havenard

+0

我想知道分開主題和國籍的'|'。啊!過多裁剪 – pmg

+0

只有'subject'標題長度爲10個字符,ret可以更短或更長。難怪沒有什麼與所有數據項目重複的「%10s」一致。 – usr2564301

回答

2

自結構元件(多個)

size_t element_len = strlen(element); 
if (element_len && (element[element_len - 1] == '\n')) { 
    element[--element_len] = 0; // remove trailing newline and update element_len 
} 
+0

是的,它工作。問題在於fgets正在保存字符'\ n'。所以我刪除了這個特殊字符。謝謝 – amitakCs