2015-04-06 122 views
0

我有以下功能打印借用者已取出的書籍列表。C printf格式化

void searchBorrowerLoans(int a) { 
      int i; 
      for (i = 1 ; i < MAX_BOOKS ; i++) {     
       if (loanlog[i].borrowerid == a) { 
        NEWLINE; 
        printf("Borrower ID : %i <--Borrowing-> Book ID's : %i\n", loanlog[i].borrowerid, loanlog[i].bookid); 
       } 
      } 
     } 

我希望能夠格式化結果類似這樣的

Borrower ID : 5 <---Borrowing---> Book ID's : 5, 3 , 2 

相反(新線) -

Borrower ID : 10 <--Borrowing-> Book ID's : 5 

Borrower ID : 10 <--Borrowing-> Book ID's : 7 

Borrower ID : 10 <--Borrowing-> Book ID's : 8 

Borrower ID : 10 <--Borrowing-> Book ID's : 9 
+1

因此,讓公共部分退出循環,並只打印裏面的數字。 –

回答

0

我不知道什麼是NEWLINE,但沒有必要知道,就這樣做

printf("Borrower ID : %d <--Borrowing-> Book ID's :", a); 
for (i = 0 ; i < MAX_BOOKS ; ++i) 
{ 
    if (loanlog[i].borrowerid == a) 
     printf("%d, ", loanlog[i].bookid); 
} 
printf("\n"); 

請注意,我固定循環從i = 0開始,因爲c中的通常情況是正確的,因爲從0索引的數組並不是從1索引的。

您必須在圖書ID列表末尾處理額外的,

+0

謝謝!我開始我的循環1,因爲最初我使用索引號作爲我的BookID在我的數據庫中,我不想有一個BookID 0. –

+0

@NathanKent是有道理的。 –