700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 相关函数: atof atoi atol strtod strtoul

相关函数: atof atoi atol strtod strtoul

时间:2022-02-15 00:38:25

相关推荐

相关函数: atof  atoi  atol  strtod  strtoul

strtod()//字符串转为 double

strtof()//字符串转为 float

strtols()//字符串转为 long double

strtol()//字符串转为 long

strtoll()//字符串转为 long long

strtoul()//字符串转为 unsigned long

strtoull() //字符串转为 unsigned long long

strtol() -- 将字符串转换成长整型数

相关函数: atof, atoi, atol, strtod, strtoul

表头文件: #include <stdlib.h>

定义函数: long int strtol(const char *nptr, char **endptr, int base)

函数说明: strtol()会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制(字符串以10进制表示),若base值为16则采用16进制(字符串以16进制表示)。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则会使用16进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。

返回值: 返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。

附加说明: ERANGE指定的转换字符串超出合法范围。

将字符串a, b, c 分别采用10, 2, 16进制转换成数字

------------------------------------------------

#include <stdlib.h>

#include <stdio.h>

main()

{

char a[] = "100";

char b[] = "100";

char c[] = "ffff";

printf("a = %d\n",strtol(a, NULL, 10)); //100

printf("b = %d\n", strtol(b, NULL, 2)); //4

printf("c = %d\n", strtol(c, NULL, 16)); //65535

}

"100" ---> 100 (Dec) ---> 100 (Dec)

"100" ---> 100 (BIN) ---> 4 (Dec)

"ffff"---> ffff(Hex) ---> 65535(Dec)

字符串b中的每个字符在内存中都占有一个字节(1 Byte = 8 bits)的空间,将若干个(3个)字节中的内容转换成二进制的数字(字符串"100"去掉双引号后是一个二进制的数字100),让后将该二进制数字以十进制的形式4打印出来

来自MSDN的例子:

#include <stdlib.h>

#include <stdio.h>

void main( void )

{

char *string, *stopstring;

double x;

long l;

int base;

unsigned long ul;

string = "3.1415926This stopped it";

x = strtod( string, &stopstring );

printf( "string = %s\n", string );

printf(" strtod = %f\n", x );

printf(" Stopped scan at: %s\n\n", stopstring );

string = "-10110134932This stopped it";

l = strtol( string, &stopstring, 10 );

printf( "string = %s", string );

printf(" strtol = %ld", l );

printf(" Stopped scan at: %s", stopstring );

string = "10110134932";

printf( "string = %s\n", string );

/* Convert string using base 2, 4, and 8: */

for( base = 2; base <= 8; base *= 2 )

{

/* Convert the string: */

ul = strtoul( string, &stopstring, base );

printf( " strtol = %ld (base %d)\n", ul, base );

printf( " Stopped scan at: %s\n", stopstring );

}

}

atoi() -- 将字符串转换成整型数

atoi, atol, atoll, atoq -- convert a string to aninteger

相关函数: atof, atol, atrtod, strtol, strtoul

表头文件: #include <stdlib.h>

定义函数: int atoi(const char *nptr);

函数说明:atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0‘)才结束转换,并将结果返回。

返回值: 返回转换后的整型数。

附加说明: atoi(nptr)与strtol(nptr, (char**)NULL, 10)结果相同

#include <stdlib.h>

#include <stdio.h>

int main() {

char *a = "-100";

char *b = "456";

int c;

c =atoi(a)+ atoi(b); //356

printf("c = %d\n", c);

}

strtod(将字符串转换成浮点数)

相关函数

atoi,atol,strtod,strtol,strtoul

表头文件

#include<stdlib.h>

定义函数

double strtod(const char *nptr,char **endptr);

函数说明

strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。

返回值

返回转换后的浮点型数。

附加说明

参考atof()。

范例

/*将字符串a,b,c 分别采用10,2,16 进制转换成数字*/

#include<stdlib.h>

mian()

{

char a[]=”1000000000”;

char b[]=”1000000000”;

char c[]=”ffff”;

printf(“a=%d\n”,strtod(a,NULL,10));

printf(“b=%d\n”,strtod(b,NULL,2));

printf(“c=%d\n”,strtod(c,NULL,16));

}

执行

a=1000000000

b=512

c=65535

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。