Linux下C语言字符串操作之字符串转数值型
1,字符串转整型(一)
#include <stdlib.h>
int atoi(const char *nptr);
字符串转化为整型
long atol(const char *nptr);
字符串转化为长整型
long long atoll(const char *nptr);
long long atoq(const char *nptr);
字符串转化为long long 类型
英文手册很简单,直接上
说明:The atoi() function converts the initial portion of the string pointed to by nptr to int. The behavior is the same as strtol(nptr, (char **) NULL, 10); except that atoi() does not detect errors. The atol() and atoll() functions behave the same as atoi(), except that they convert the initial portion of the string to their return type of long or long long. atoq() is an obsolete name for atoll().
2,字符串转整型(二)
#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
字符串转长整型,base参数为进制,如转化为10进制,则base应该为10
long long int strtoll(const char *nptr, char **endptr, int base);
字符串转化为long long int
说明:详细说明请参考man手册。
3,字符串转浮点数
#include <stdlib.h>
double strtod(const char *nptr, char **endptr);
字符串转 双精度浮点数 double 类型
float strtof(const char *nptr, char **endptr);
字符串转 单精度浮点数 float 类型
long double strtold(const char *nptr, char **endptr);
字符串转 long double 类型
有了以上库函数,可以很方便的把字符串转化为数值型,真系灰常的方便啊,有木有?
示例代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str_int="892";
int int_val=atoi(str_int);
printf("字符串转整型:%d\n",int_val);
long long_val=atol(str_int);
printf("字符串转长整型:%ld\n",long_val);
char *str_float="238.23";
char *endptr;
float float_val=strtof(str_float,&endptr);
printf("字符串转单精度浮点型:%f\n",float_val);
double double_val=strtod(str_float,&endptr);
printf("字符串转双精度浮点型:%f\n",double_val);
char *str_long="9839282";
int base=10;
long long_v=strtol(str_long,&endptr,base);
printf("strtol : %ld\n",long_v);
return 0;
}
代码输出:
- 字符串转整型:892
- 字符串转长整型:892
- 字符串转单精度浮点型:238.229996
- 字符串转双精度浮点型:238.230000
- strtol : 9839282
说明:以上各函数的man手册都有详尽的解释,详情请查阅man手册。