C语言怎么把浮点型float数据转换为字符型char数据?

C语言怎么把浮点型float数据转换为字符型char数据?

主要有两种方法,但显然都没有Python简单实用!

第一种方法

这种方法显然对浮点型数据的精度会有影响,且注意最终输出的形式不同结果也是不同的,若要保留数字形式输出则为%d形式。

#include<stdio.h>
#include<string.h> 

int main(){
   float x = 65.1;
   printf("转换之前%.5f\n",x);
   char c;
   c = (char) x;   //这样 c 里存的就是 65,即字符 'A'	
   printf("转换之后%c\n",c);
   printf("转换之后%d\n",c);
}

注意不同输出格式对应的输出是不同的。
注意不同输出格式对应的输出

第二种方法

这种方法不是把 float 型转换成 char 型,而是把 float 型的数据转换成为“字符型数组”。这种转换借用 <stdio.h> 里的 sprintf 函数,把实数打印到数组里。

sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制。

#include<stdio.h>
#include<string.h> 

int main(){
   int i=0;
   
   float x = 65.1;
   printf("转换之前%.5f\n",x);
   char a[20];
   sprintf(a, "%s", x); 
   printf("转换之后%f\n",a[0]);
   //即 a[0] = '6'; a[1] = '5'; a[2] = '.'; a[3] = '1'; a[4] = '\0'; 

   
   for(i=0;i<4;i++){
   	printf("转换之后%c\n",a[i]);
   	printf("转换之后%c\n",a[i]);
   }
   
   	return 0; 
}

sprintf函数信息

功能
把格式化的数据写入某个字符串缓冲区。
头文件
stdio.h
原型
int sprintf( char *buffer, const char *format, [ argument] … );
参数列表
buffer:char型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]…:可选参数,可以是任何类型的数据。
返回值
返回写入buffer 的字符数,出错则返回-1. 如果 buffer 或 format 是空指针,且不出错而继续,函数将返回-1,并且 errno 会被设置为 EINVAL。
sprintf 返回以format为格式argument为内容组成的结果被写入buffer 的字节数,结束字符‘\0’不计入内。即,如果“Hello”被写入空间足够大的buffer后,函数sprintf 返回5。
同时buffer的内容将被改变。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值