atoi
函数原型:
#include <stdlib.h>
int atoi(const char *str);
功能:atoi
函数用于将一个表示整数的字符串转换为其对应的整数值。它从输入字符串的开始处读取一系列字符,直到遇到非数字字符为止,并将这些字符解析为整数。
参数:
str
:指向包含整数字符串的指针。
返回值:
返回转换得到的整数值。
如果字符串为空或者不能识别为有效的整数,返回
0
。如果转换后的整数值超出
int
类型的范围,则行为未定义,通常在某些实现中会返回INT_MAX
或INT_MIN
。
示例:
例 1:简单使用。
#include <stdlib.h>
#include <stdio.h>
int main() {
char str[] = "1234";
int value = atoi(str);
printf("The integer value of '%s' is: %d\n", str, value);
return 0;
}
例 2:自己实现
atoi
。
#include <stdio.h>
int my_atoi(char *str)
{
int sum = 0;
while (*str >= '0' && *str <= '9')
{
sum = sum * 10 + (*str - '0');
str++;
}
return sum;
}
int main()
{
char str[] = "1234abc";
printf("%d\n", my_atoi(str));
}
atol
函数原型:
#include <stdlib.h>
long atol(const char *str);
功能:
atol
函数与atoi
函数相似,但将字符串转换为long
类型的整数值,因此它可以处理比int
类型更大的整数。
参数:
str
:指向包含长整数字符串的指针。
返回值:
返回转换得到的长整数值。
如果字符串为空或者不能识别为有效的整数,返回
0
。如果转换后的长整数值超出
long
类型的范围,则行为未定义,通常在某些实现中会返回LONG_MAX
或LONG_MIN
。
示例:
#include <stdlib.h>
#include <stdio.h>
int main() {
char str[] = "9223372036854775807"; // 最大 long 值(在多数系统上)
long value = atol(str);
printf("The long integer value of '%s' is: %ld\n", str, value);
return 0;
}
atof
函数原型:
#include <stdlib.h>
double atof(const char *str);
功能:
atof
函数用于将一个表示浮点数的字符串转换为对应的双精度浮点数。
参数:
str
:指向包含浮点数字符串的指针。
返回值:
返回转换得到的双精度浮点数值。
如果字符串为空或者不能识别为有效的浮点数,返回
0.0
。如果转换后的浮点数值超出
double
类型的范围,则行为未定义。
示例:
#include <stdlib.h>
#include <stdio.h>
int main() {
char str[] = "3.141592653589793238";
double value = atof(str);
printf("The floating-point value of '%s' is: %.10f\n", str, value);
return 0;
}
以上三个函数都是从 C 标准库中用于将字符串转换为相应数值类型的关键函数。在使用过程中,需要注意输入字符串的有效性和转换后数值的范围。如果可能,使用 strtol
、strtoll
、strtoul
、strtoull
和 strtod
等函数可以提供更精确的控制和错误处理机制。
评论区