2013-07-01 86 views
0

当该整数作为参数传递给它时,为了得到printf显示的空值,应该给整数分配什么值?如何从printf获得空白输出

虽然我分配一个空值的整数它打印0

所以应该做些什么?

谢谢

+1

如果你想要一个空白的输出,不要使用'printf',如果整数是0或其他什么都不要打印任何东西。 –

+0

您不能将q null值分配给int。如果你有int x = 0;你已经使x为零,而不是零。 – doctorlove

+0

我同意@不是托尼。此外,你将不能有一个整数打印出一个“空白”。它很可能会打印出0(如你所说)或对象在内存中的引用。相反,这样做:if(num!= 0){print.f(“print whatever”);} – Brian

回答

1

如果您指示printf()打印整数,则不存在由空字符串表示的整数值。在整数上下文中没有“空值”,C中的NULL被明确定义为在指针上下文中为零值。在整数上下文中,0只是一个值。至于应该做什么,使用条件测试来确定是否调用printf()或者使用条件测试来选择使用printf()显示一个整数,并使用printf()(或其他函数)显示一些空格字符串适当的长度。

1

“空值”是(空)字符串,可能会导致空值没有整数。

1

printf中的%d没有修饰符在零时为空;然而,显然有时候你想在数字输出中为零输出空白,特别是输出一个多数为零的数字表。如果您对此任务使用printf进行设置,则可以进行以下调整,以便在int值为零时允许空白。

1 for (int i = 0; i < STOCKS; i++) { 
2  char cur_str[4] = " "; 
3 
4  if (current_price[i]) sprintf(cur_str, "%+3d", current_price[i]); 
5 
6  printf(pcb[i+4], "%-15s%4d %4s  %4d", 
7  stocks[i], ph[year-1][i], cur_str, ph[year][i]);  
8 } 

工作向后: 线6-7是printf语句,其中目前的价格是要被显示在与%4S选项第三列和相应cur_str参数

线4个检查非零当前价格和使用的sprintf以产生调整电流价格的权利,当它是不为零,入cur_str

线2分的默认值cur_str到四个空格,列的宽度