2013-10-22 22 views
0
double d,e,f; 

我有3个变量,我的程序需要在某些lines.I空格字符尝试一切,但无法找到。如何用c中的double定义打印'space character'?

d='space character' 

这就是我需要的。

如果(...) 在这里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); 
+1

'32'是空格的ASCII值,它是一个精确的整数值。如果你想要一个字符,然后使用'char'类型,并为其分配例如''''为空间。 –

+2

有人可以解释我的问题O_o。我的意思是应该'd = 32'就够了吗? – Sadique

回答

0

声明dchar

char d; 
... 

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

@acme;我认为他的意思是''''写'空格字符'。 – haccks

+0

但我必须声明d作为双重计算它计算一些数字。另外它需要空间字符而不计算数字我需要他们两个数字+空格字符 – jarlaxle

+1

@jarlaxle不,你不能。 C语言允许超过3个变量共存于同一个程序中... – Lundin

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 

} 
+0

为什么有人想要这样做?如果你试图打印的字符不能表示为特定浮点格式的确切数字?你会打印一个不同的角色。 – Lundin

+0

@Lundin你是对的。这里OP想要用double值d打印'空格字符'。我相信OP只想打印空格字符,一些双重值和其他字符。 – Gangadhar

+0

@Gangadhar我的if块结束后,我的printf fonc。开始。因为程序从文本文件中读取了一些行,并在计算出某些东西后打印。 – jarlaxle

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之前。