这篇“C语言的字符串转换函数怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言的字符串转换函数怎么用”文章吧。

字符串转整数

字符串转换为整数的函数有两个,他们的函数原型如下:

int__cdeclatoi(constchar*_Str);long__cdeclatol(constchar*_Str);

这两个函数的用法都很简单,atoi函数将字符串转换为整数int型,atol函数将字符串转换为长整形long int型。如果转换无效,返回值都为0,下面通过一个简单的例子看一下这两个函数的用法。

#include<stdio.h>#include<stdlib.h>intmain(intargc,char**argv){intval;longval_l;charstr[20];strcpy(str,"1234");val=atoi(str);printf("字符串值=%s,整型值=%d\n",str,val);strcpy(str,"abc");val=atoi(str);printf("字符串值=%s,整型值=%d\n",str,val);strcpy(str,"98993489");val_l=atol(str);printf("\n字符串值=%s,长整型值=%ld\n",str,val_l);strcpy(str,"abc123");val_l=atol(str);printf("字符串值=%s,长整型值=%ld\n",str,val_l);return0;}

给字符串赋不同的值,然后使用,atoi函数和atol函数对字符串进行转换,输出结果如下:

通过结果可以看出,只有当字符串有效时才能正确的转换成整数,否则转换的结果就为0。

将字符串转换为整数的函数还有以下两个:

long__cdeclstrtol(constchar*__restrict___Str,char**__restrict___EndPtr,int_Radix);unsignedlong__cdeclstrtoul(constchar*__restrict___Str,char**__restrict___EndPtr,int_Radix);

strtol()函数用来将字符串转换为长整型数(long),它有三个参数:

_Str为要转换的字符串,

_EndPtr为第一个不能转换的字符的指针,

_Radix为字符串 str 所采用的进制。

trtol()函数会将参数str字符串根据参数base来转换成长整型数(long)。参数base范围从236,或0。参数base代表str采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。

下面通过一个简单的例子演示一下strtol()函数的用法。

#include<stdio.h>#include<stdlib.h>intmain(intargc,char**argv){charstr[30]="123-456abc";char*pEnd;longret1,ret2;ret1=strtol(str,&pEnd,10);ret2=strtol(pEnd,&pEnd,10);printf("数字1是:%ld\n",ret1);printf("数字2是:%ld\n",ret2);printf("字符串部分是:%s\n",pEnd);return0;}

定义一个字符串,然后使用strtol()函数转换字符串中的数字,输出结果如下:

通过打印的结果可以看出,strtol()函数将字符串中的两个数字都成功换成为整数了。

当strtol()函数读取字符串时,读取到第一个空格是,由于空白字符不能转换,所以函数返回,并将空白字符的存储在pEnd中,接下来从空白位置继续转换,将字符串“-456”转换为数字之后,又遇到了空白字符,不能继续转换,函数退出,将第二个空白字符存储在pEnd中,最后将剩余的字符串换打印出来。

通过strtol()函数就可以智能的将字符串的数字提取出来。

strtoul函数用来将字符串转换成无符号长整型数(unsigned long),它的用法和strtol()函数基本一样。

修改上面的代码如下:

#include<stdio.h>#include<stdlib.h>intmain(intargc,char**argv){charstr[30]="123456abc";char*pEnd;longret1,ret2;ret1=strtoul(str,&pEnd,10);ret2=strtoul(pEnd,&pEnd,10);printf("数字1是:%lu\n",ret1);printf("数字2是:%lu\n",ret2);printf("字符串部分是:%s\n",pEnd);return0;}

输出结果为:

如果在字符串的数字前面添加上负号,转换的结果就会出错。

在使用strtol()函数和strtoul函数时要注意两点:

base的值为0时,默认采用10进制转换,但如果遇到'0x' / '0X'前置字符则会使用16进制转换,遇到'0'前置字符则会使用8进制转换。

endptr不为NULL,则会将遇到的不符合条件而终止的字符指针由endptr传回;若endptrNULL,则表示该参数无效,或不使用该参数。

以上就是关于“C语言的字符串转换函数怎么用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。