2015-04-06 97 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是有道理的。 –