C语言字符串转整数:atoi vs strtol详解
atoi和strtol都是C语言中常用的将字符串转换为整数的函数,但它们在使用时有一些不同之处。
-
转换类型: atoi函数只能将字符串转换为整数(int),而strtol函数可以将字符串转换为整数(int)、长整数(long)或长长整数(long long)。
-
函数原型和参数:
-
atoi函数的原型为:int atoi(const char* str),其参数是一个指向字符串的指针,返回值是转换后的整数。 -
strtol函数的原型为:long strtol(const char* str, char** endptr, int base),其参数包括一个指向字符串的指针、一个指向指针的指针 (用于存储转换后的最后一个字符的指针) 和一个进制数 (用于指定字符串的进制)。返回值是转换后的整数。
-
-
处理特殊情况:
-
atoi函数在遇到非数字字符时会停止转换。 -
strtol函数可以处理一些特殊情况,例如遇到正负号、空格、十六进制等。例如,strtol('0x10', NULL, 16)将会成功地将十六进制字符串 '0x10' 转换为十进制整数 16。
-
-
错误处理:
strtol函数的第二个参数endptr用于存储转换后的最后一个字符的指针,可以用来判断是否完全转换。如果endptr指向的字符不是字符串的结尾,则表示转换过程中出现了错误。
总的来说,如果只需要将字符串转换为整数,可以使用 atoi 函数;如果需要更多的控制和错误处理,以及处理不同进制的字符串,可以使用 strtol 函数。
原文地址: https://www.cveoy.top/t/topic/pgq0 著作权归作者所有。请勿转载和采集!