如何用c中定义的double打印'space character'?

时间:2013-10-22 12:32:43

标签: c printf space

double d,e,f;

我有3个变量,我的程序在某些行中需要空格字符。我尝试了所有但不能找到的。

d='space character' 

这就是我需要的。

if(...) 在这里d,e和f计算数字

else{
        o="no";
        w="";
        d= ' ' ;
        e =' ';
        f=' ';
        quest="";

        }


        fprintf(bb,"%-10s%-13s%-13.2lf\t%-13.2lf\t%-13.2lf\t%-3s\n", o, w, d,e,f,quest);    

        printf( "%-10s%-13s%-13.2f\t%-13.2f\t%-13.2f\t%-3s\n\n", o, w, d,e,f,quest ); 

3 个答案:

答案 0 :(得分:1)

如果d值等于32则会打印空格。

double d;

if (somecondition)
{
   d=32; 
   printf("%c==%d==%f",(char)d,(int) d,d ); //cast to char while printing
}

你不应该将' '(空格)加倍。

当你想要时,将32存储到d并使用强制转换。


根据你的编辑,你可以这样做

if(...)
{
   //do calculations and print and print statements inside if
  fprintf(bb,"%-10s%-13s%-13.2lf\t%-13.2lf\t%-13.2lf\t%-3s\n", o, w, d,e,f,quest); 
}
else
{
  //modify fprintf and printf statements, do not modify values
  fprintf(bb,"%-10s%-13s%- \t%-13.2lf\t%-13.2lf\t%-3s\n", o, w,   e,f,quest); 
                        //^^ here use space.do not use this     ^^ argument d 

}

答案 1 :(得分:0)

d声明为char

 char d;
 ...

 if(......)
    d = ' ';

答案 2 :(得分:0)

在C语言中,所有字符都以小整数(通常为1字节大)存在。将字符存储在用于浮点计算的变量中是没有意义的。

相反,构建了所需格式的输出格式字符串。最明显的是

printf("%f %f %f", d, e, f);

或者sprintf,以防你需要字符串用于其他目的而不是在屏幕上打印。

编辑:如果空间的输出应该取决于双打的值,那么你应该这样做:

signed char ascii_value = ' ';

if ( fabs(my_double - (double)ascii_value) <= epsilon * fabs(my_double) )
{
  print(ascii_value);
}

如果您完全不知道上述内容是什么或为什么我这样做,您可能不应该在任何点编程上浮动,而不是在reading this之前。