Linux 函数 atoi 是一种 C 函数,用于把字符串转换为整数值,若字符串中有其他非数字字符则 atoi 对其会忽略,只考虑其中有效的十进制数字。它的原型如下:
int atoi(const char *str);
它把参数 str 所指向的字符串转换为一个 int 型整数,同时会自动跳过在字符串起始符号中遇到的所有空白字符(如空格,tab 等空白符)。
要使用 atoi 函数,只需要在程序的开始添加如下的库函数:
#include
假设我们有一个字符串 “123 456″,我们想要把它转换成整数,可以使用 atoi 函数:
int num = atoi("123 456");
这样,atoi 函数就会把 “123 456” 这个字符串转换成一个整数 123,而忽略其中的空格和456,但如果字符串中有非数字字符,比如 “123×456″,atoi 将会把”123 x456″视为字符串 “123”,并返回结果 123。
此外,要注意的是,atoi 并不能处理带有前导零的字符串,比如 “0123” 将会被转换成 123,因为 atoi 将前导的 0 忽略掉。
为了在 atoi 函数中可以处理带有前导零的字符串,可以使用函数 strtol,该函数有三个参数:第一个参数是需要转换的字符串,第二个参数用于指定要使用的进制(如 8 表示八进制,16 表示十六进制),第三个参数是转换结果的类型:long int、unsigned long int、long long int 等,其原型为:
long int strtol(const char *nptr, char **endptr, int base)
因此,如果要把带有前导零的字符串转换成十六进制整数,可以使用如下语句:
long int num = strtol("0123",NULL,16);
由于 atoi 和 strtol 都是用于把字符串转换成整型数的函数,因此它们应该比较有用,尤其是处理字符串中带有不明字符的情况下,使用这些函数会事半功倍。