2013-10-09 77 views
0

此代碼詢問名稱,方向,和多個每個時間和在陣列保存它。它會問你是否要繼續。 0用於輸入另一個聯繫人,1用於打印列表。我嘗試使用\ t將它標題下的每個項目對齊,當我輸入的字符串沒有空格時,它會很好地工作,但是當我使用空格時,字符串不會對齊。問題是什麼?我無法弄清楚。提前致謝。輸出對齊到每個標題

#include "stdafx.h" 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 
#include <string.h> 

void desplegar(int, char[][20], char[][20],char[][20]); 

int main() 
{ 
    char nombres[20][20]; 
    char direcciones[20][20]; 
    char numeros[20][20]; 
    int opcion = 0; 
    int contactos = 0; 

    system("hostname"); 

    do { 

     printf("\nIngrese el nombre del contacto: "); 
     gets(nombres[contactos]); 

     printf("\nIngrese la direccion del contacto: "); 
     gets(direcciones[contactos]); 

     printf("\nIngrese el numero del contacto: "); 
     gets(numeros[contactos]); 

     contactos++; 

     printf("\nDesea ingresar otro contacto? (0/1): "); 
     scanf("%d",&opcion); 
     getchar(); 
    }while(opcion != 1 && contactos < 20); 

    desplegar(contactos,nombres,direcciones,numeros); 


    printf("\n"); 
    system("pause"); 
    return 0; 
} 

void desplegar(int cantidad,char nombres[][20],char direcciones[][20],char numeros[][20]){ 
printf("Nombres\t\tDirecciones\t\tTelefono\n"); 

    for (int i = 0; i < cantidad; i++){ 

     printf("%s\t\t%s\t\t%s\n",nombres[i],direcciones[i],numeros[i]); 

    } 
} 
+2

http://stackoverflow.com/questions/2436004/how-do-i-correctly-organize-output-into -columns –

+1

你的代碼顯然是C,爲什麼用C++標記? – jrd1

回答

0

閱讀上的printf格式說明和不使用標籤。製表符是邪惡的,因爲它們可以從零擴展到8(至少)空格並破壞列格式。

實施例中,如果第1列是寬20個字母,使用 「%20S」 爲文本或 「%20d的」 用於數字。您必須查看如何使用說明符的左對齊。

注意:此方法是僅適用於固定寬度的字體。有更多的工作使用可變寬度的字體(諸如字符寬度,字符之間的間隔,等等)時

+0

左對齊是通過在數字之前放置一個減號來實現的。感謝您的回答,我現在開始了我的程序工作。 –