2017-01-28 3 views
1

Как можно выровнять сказать, следующий фрагмент текста с помощью функции PRINTF Скажет, я хотел нужного выходавыравнивания Printf для нескольких спецификаторов формата

void print() { 
    printf("%s %s  %d  %c\n",firstName, lastName, age, gender); 
} 

быть:

Foo Foo  15  M 

Bob Bob  16  F 

John John 12  M 

Проблемы I у меня есть с тех пор, как имя Джона дольше, он немного подтолкнет следующий спецификатор. Я хочу, чтобы они были выровнены, чтобы каждая строка была в порядке.

+0

@xing вы можете объяснить? почему вы выбрали эти цифры? –

+0

@ xing ok Я получил это спасибо –

ответ

0

Скопируйте имя и фамилию во временную строку. Затем передайте это значение printf, используя ширину поля на %s, достаточно большой, чтобы соответствовать полному имени с флагом - для выравнивания по левому краю.

void print(char *first, char *last, int age, char gender) 
{ 
    int len = strlen(first) + strlen(last) + 1; 
    char name[len+1]; 
    strcpy(name, first); 
    strcat(name, " "); 
    strcat(name, last); 
    printf("%-20s %2d %c\n",name, age, gender); 
} 

С вашего ввода пробы, это выводит:

Foo Foo    15 M 
Bob Bob    16 F 
John John   12 M 
Смежные вопросы