在C中,我如何使用printf()函数来存储'一个字符串?

时间:2016-01-28 03:46:00

标签: c floating-point bit 16-bit

我试图使用bit16整数来表示数字的unsigned表示(浮点表示)。这里的分数字段偏离10的标准,是8位 - 暗示指数字段是7位,符号是1位。

我的代码如下:

bit16 float_16(bit16 sign, bit16 exp, bit16 frac) {

 //make the sign the number before binary point, make the fraction binary.
 //concatenate the sign then exponent then fraction
 //

 bit16 result;
 int theExponent;

 theExponent = exp + 63; // bias = 2^(7-1) + 1 = 2^6 + 1 = 63

 //printf("%d",sign);
 int c, k;

 for(c = 6; c > 0; c--)
 {
     k = theExponent >> c;

     if( k & 1)
         printf("1");
     else
         printf("0");
 }

 for(c = 7; c >= 0; c--)
 {
     k = frac >> c;

     if( k & 1)
         printf("1");
     else
         printf("0");
 }



 //return result;

}

我的想法是'重新创造''这些字段中的16 bit序列是将它们连接在一起,但是如果我想在另一个应用程序中使用它们,我无法这样做。有没有办法在将所有内容(16-bit序列)打印到变量后存储最终结果,然后可以将其表示为无符号整数?或者有更优化的方法来执行此过程吗?

1 个答案:

答案 0 :(得分:1)

虽然printf在这种情况下不起作用(您无法'存储'它的结果),但您可以使用sprintf

int sprintf ( char * output_str, const char * format, ... );

sprintf将格式化数据写入字符串

如果在printf上使用了格式,则使用相同的文本编写一个字符串,但不是打印(或显示在控制台上),而是将内容存储为指向缓冲区中的C字符串output_str

缓冲区的大小应足够大,以包含整个结果字符串。请参阅Buffer Overflow

终止空字符(\0)将自动附加在output_str的末尾。

output_str到整数变量

您可以使用atoi功能执行此操作。你可以用这样的整数变量得到你的答案:

int i = atoi (output_str);