C语言学习:简单了解下stdlib中的字符串转换函数
简介:
在学习C语言的时候,关于标准头文件stdlib中的一些函数也有所了解,在学习字符和字符串的时候,关于字符串的处理函数也有很多,在整形中字符和整形可以看似一样的来处理,但是对于字符串来说呢。怎么在数字和字符串之间进行转换,比如,在main函数中的参数都是字符串类型,但是往往需要在使用的时候将其转换成数字来进行处理。这就是需要字符串转换函数,这里只简单介绍一下stdlib中提供的一些字符串转换函数
提示:
博客:章飞_906285288
博客地址:http://blog.csdn.net/qq_29924041
函数介绍:
函数 | 作用 |
---|---|
double atof(const char *nptr) | 将字符串转换成双精度浮点型 |
int atoi(const char *nptr) | 将字符串转换成整型数 |
long atol(const char *nptr) | 将字符串转换成长整形 |
double strtod(const char *nptr,char **endptr) | 将字符串类型转换成双精度浮点型 |
long int strtol(const char*nptr,char **endptr,int base) | 将字符串转换成长整形数 |
unsigned long int strtoul(const char *nptr,char **endptr,int base) | 将字符串转换成无符号长整形 |
char* gcvt(double num,size_t ndigits,char *buf) | 将浮点型数转换成字符串 |
char *ecvt(double value,int ndigit,int *dec,int *sign) | 将浮点数转换为字符串 |
char *fcvt(double value,int ndigit,int *dec,int *sign) | 将浮点数变成一个字符串 |
简单的使用用例:
/*
* ===========================================================================
*
* Filename: stringstdlib.c
* Description: 在stdlib中提供的一些关于字符串转换的函数
* Version: 1.0
* Created: 2017年07月23日 20时45分54秒
* Revision: none
* Compiler: gcc
* Author: (),
* Company:
*
* ===========================================================================
*/
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#include<string.h>
/* *
*atol
*atof
*atod
*strtod
*strtol
*strtoul
*gcvt
*egvt
*fgvt
* */
int main(int argc,char *argv[]){
char* c_num = "95.5";
printf("atoi:%d\n",atoi(c_num));
printf("atol:%ld\n",atol(c_num));
printf("atof:%f\n",atof(c_num));
printf("atoll:%lld\n",atoll(c_num));
const char *s = {"87.99%已经完成"};
char *p; //声明一个字符指针类型变量
double d;
d = strtod(s,&p);//将字符指针的地址传入进去
printf("数值%.2f\n",d);
printf("%.2f后的字符串是:%s\n",d,p);
const char* l_s = "99的努力加百分之1的灵感";
char *l_s_p;
long l;
l = strtol(l_s,&l_s_p,10); //10是规定字符串内的进制形式
printf("l:%ld\n",l);
//将浮现类型转换成字符串,
const int NUM = 7; //转换的位数
double d_num = 1234.56789;
char d_s[NUM];
gcvt(d_num,NUM,d_s);
printf("change:%s\n",d_s);
//将浮点类型转换成字符串ecvt
float f_num = 123.445566;
const int CHANGE_NUM = 7;
char f_s[CHANGE_NUM];
int dec; //存储的小数点位置
int sig; //转换的数的符号位
strcpy(f_s,ecvt(f_num,CHANGE_NUM,&dec,&sig));
printf("string:%s dec:%d sig:%d\n",f_s,dec,sig);
f_num = -123.445566;
strcpy(f_s,ecvt(f_num,15,&dec,&sig));
printf("string:%s dec:%d sig:%d\n",f_s,dec,sig);
return 0;
}