2016-04-23 79 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]));