C语言库函数:类型转换

声明: 本篇博客的学习途径主要为以下网站和课堂讲解,发博客目的仅为学习使用,在该博客的基础上做了一定程序的简略和修改。
参考博客

类型转换 stdlib.h

int/float to string/array

  • 整数转化为字符串 to
    a:字符串
    i:整型int
    l:长整形 long
    ul:无符号长整形 unsigned long

  • 小数转化为字符串 cvt (略)
    g:浮点数 ,包含小数点
    e:双精度浮点数,没有小数点,如果超过value的数字长度不补零。
    f:浮点数,没有小数点,如果超过value的数字长度将补零。

曲线救国:sprintf( )

itoa():将整型值转换为字符串。
char *itoa (int value, char *str, int base );

【参数】

  • int value 被转换的整数
  • char *string 转换后储存的字符数组
  • int radix 转换进制数,如2,8,10,16 进制等

【返回值】:返回指向str的指针,无错误返回。

#include <stdlib.h>//cstdlib和stdlib.h都可以
#include <stdio.h>//cstdio和stdio.h都可以
//如果用的是cstdio和cstdlib,要加上 using namespace std;
int main(void)
{
    int number = 123456;
    char string[25];
    itoa(number, string,1 0);
    printf("integer=%d string=%s\n", number, string);
    return 0;
}

ltoa():将长整型值转换为字符串。

【功能】把value的值转换为以NULL结束的字符串,并把结果存在string中。radix是转换的基数值

char *ltoa(long value,char *string,int radix)

【参数】

  • value :要转换的数值
  • string : 转换后指向字符串的指针
  • radix : 进制

ultoa():将无符号长整型值转换为字符串。

【功能】说明:ultoa函数把 value转换成一个以空字符结尾的radix进制的字符串,并存储在string中(至多33个字节),不执行上溢出检查。radix指出value的基数

char *ultoa(unsigned long value, char *string, int radix);

【参数】

  • value要转换的数
  • String 字符串结果
  • radix : 进制
#include
#include
int main( void )
{
    unsigned long lnumber = 3123456789L;
    char string[25];
    ultoa(lnumber,string,10);
    printf("string = %s unsigned long = %lu\n",string,lnumber);
    return 0;
}

gcvt():将浮点型数转换为字符串,取四舍五入。
ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
fcvt():指定位数为转换精度,其余同ecvt()。

string/array to int/float

  • 字符串转其他 to
    a:字符串 ascii
    f:浮点数
    i:整型
    str:字符串
    d:双精度浮点数
atof():将字符串转换为浮点型值。
double atof(const char *nptr);

【函数说明】atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
【返回值】:返回转换后的浮点型数。

#include<stdlib.h>
int main()
{
char*a="-100.23";
char*b="200e-2";
double c;
c=atof(a)+atof(b);
printf(“c=%.2lf\n”,c);
return 0;
}
结果为 c=-98.23

atoi():将字符串转换为整型值。
int atoi(const char *str)

【参数】
str:要转换为整数的字符串。

【返回值】

  • 该函数返回转换后的长整数
  • 如果没有执行有效的转换,则返回零
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   int val;
   char str[20];
   
   strcpy(str, "98993489");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val);

   strcpy(str, "runoob.com");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val);

   return(0);
}
字符串值 = 98993489, 整型值 = 98993489
字符串值 = runoob.com, 整型值 = 0

atol():将字符串转换为长整型值。

strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。

曲线救国:sprintf() 把数据写入某个字符串缓冲区 stdio.h

【功能】主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。

int sprintf(char *string, char *format [,argument,...]);

【参数】

  • string-- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
  • format-- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。
format 标签属性是%[flags][width][.precision][length]specifier
  • [argument]…:根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。

【返回值】

  • 如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。
  • 如果失败,则返回一个负数。
    【例】
// crt_sprintf.c
// compile with: /W3
// This program uses sprintf to format various
 
//data and place them in the string named buffer.
// 程序使用sprintf 将各种数据格式化后置于字符数组buffer中
#include <stdio.h>
int main( void )
 
{
   char  buffer[200], s[] = "computer", c = 'l';
   int   i = 35, j;
   float fp = 1.7320534f;
   // 格式化并打印各种数据到buffer
   j  = sprintf( buffer,    "   String:    %s\n", s ); // C4996
   j += sprintf( buffer + j, "   Character: %c\n", c ); // C4996
   j += sprintf( buffer + j, "   Integer:   %d\n", i ); // C4996
   j += sprintf( buffer + j, "   Real:      %f\n", fp );// C4996
    
   printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );
      return 0;
}
输出结果:
Output:
String: computer
Character: l
Integer: 35
Real: 1.732053
character count = 79

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值