0
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 ); 
4

3 回答 3

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 中并使用 cast。


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

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 

}
于 2013-10-22T12:39:33.760 回答
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);
}

如果你完全不知道上面的意思或我为什么这样做,你可能不应该做浮点编程,而不是在阅读本文之前。

于 2013-10-22T12:52:11.243 回答
0

声明dchar

 char d;
 ...

 if(......)
    d = ' ';
于 2013-10-22T12:34:40.497 回答