2016-04-23 76 views
0

我有四個字符串數組。我想這個格式打印出來的字符串:打印一串字符串並忽略空值

     printf(" %d \t %s \t %s \t %s \t %s.\n", 
         quadruples_line_counter, 
         strings_quadruples1_action[0], 
         strings_quadruples2_variable1[0], 
         strings_quadruples3_variable2[0], 
         strings_quadruples4_temp_variable[0]); 

它給出了這樣的輸出:

17  func sub  int  3. 
17  param (null)   (null)   (null). 
17  alloc   4  (null)   xa. 
17  alloc   4  (null)   y. 
17  alloc   4  (null)   z. 
17  multiply  55  y  t0. 
17  divide   t0  z  t1. 
17  plus   xa  t1  t2. 
17  plus   t2  x  t3. 
17  func main void 0. 
17  alloc   4  (null)   a. 
17  alloc   4  (null)   b. 
17  alloc   4  (null)   c. 
17  arg    (null)   (null)   x. 
17  arg    (null)   (null)   y. 
17  arg    (null)   (null)   z. 
17  call   sub  3  t5. 
17  assign   t5  (null)   y. 

我怎麼會去打印時忽略了空?我不知道如何做到這一點。

+0

'strings_quadruples1_action [0] == NULL? 'strings_quadruples1_action [0]:「」' – adatapost

回答

0

您可能希望使用三元運算:

strings_quadruples1_action[0]!=NULL?strings_quadruples1_action[0]:"" 

執行相同的其他三根弦也。

或定義在一開始的宏:

#define NO_NULL(X) X!=NULL?X:"" 

,做的printf類似:

printf(" %d \t %s \t %s \t %s \t %s.\n", 
         quadruples_line_counter, 
         NO_NULL(strings_quadruples1_action[0]), 
         NO_NULL(strings_quadruples2_variable1[0]), 
         NO_NULL(strings_quadruples3_variable2[0]), 
         NO_NULL(strings_quadruples4_temp_variable[0]));