2016-05-12 1 views
2

私は列にテキストを表示しようとしていますが、出力の2行目にスペースが追加されます。私は間違って何かしていますか? (エントリは、文字列の前にスペースを含まない)、ここでは、関与する機能である:何らかの理由でprintf関数が表示したい部分にスペースを追加します

add(List *book) 
{ 
    Contact *runner = book->una; 
    Contact *node = (Contact *) malloc(sizeof(Contact)); 

if (node == NULL); 
else { 
    printf("Add a contact\n"); 
    printf("Enter the first name: "); 
    scanf("%s", node->fname); 
    printf("Enter the last name: "); 
    scanf("%s", node->lname); 
    printf("Enter the mobile number: "); 
    scanf("%s", node->number); 
    printf("\nContact added!\n\n"); 
    node -> next = NULL; 
    if(book->una == NULL){ 
     book->una = node; 
    } 
    else 
    { 
     while(runner->next != NULL) 
     { 
      runner = runner->next; 
     } 
     runner->next = node; 
    } 
} 
} 

    display(List *book) 
{ 
    Contact *runner = book -> una; 
    if(runner == NULL) 
    { 
     printf("%20s", "PHONEBOOK EMPTY!"); 
     return; 
    } 
    printf("Contact list\n"); 
    printf("%-15s%-15s%-15s", "First Name", "Last Name", "Mobile number\n"); 
    while(runner != NULL) 
    { 
     printf("%-15s%-15s%-15s\n", runner->fname, runner->lname, runner->number); 
     runner = runner->next; 
    } 
} 

/*An example output basically turns out like this: 

First Name   Last Name   Mobile Number 
James    Harrison   123456 
Wendy    Barnes   00000 
Cam    Rodriguez   575938*/ 

上記のように任意の入力データが印刷されます。

+2

問題はここには表示されません。問題の[最小、完全、検証可能な例](http://stackoverflow.com/help/mcve)で質問を更新してください。 – dbush

答えて

9

フィールドの代わりに書式文字列に\nを置く必要があります。 Mobile numberには13文字、プラス\n 14があり、%-15sのパディングとして1つのスペースが追加されているため、\nの次の行に移動します。

関連する問題