声明: 本篇博客的学习途径主要为以下网站和课堂讲解,发博客目的仅为学习使用,在该博客的基础上做了一定程序的简略和修改。
参考博客
常用库函数
类型转换 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