侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

C库函数-atoi、atol和atof

zze
zze
2024-03-25 / 0 评论 / 0 点赞 / 20 阅读 / 7319 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

atoi

函数原型:

#include <stdlib.h>

int atoi(const char *str);

功能:atoi 函数用于将一个表示整数的字符串转换为其对应的整数值。它从输入字符串的开始处读取一系列字符,直到遇到非数字字符为止,并将这些字符解析为整数。

参数:

  • str:指向包含整数字符串的指针。

返回值:

  • 返回转换得到的整数值。

  • 如果字符串为空或者不能识别为有效的整数,返回 0

  • 如果转换后的整数值超出 int 类型的范围,则行为未定义,通常在某些实现中会返回 INT_MAXINT_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_MAXLONG_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 标准库中用于将字符串转换为相应数值类型的关键函数。在使用过程中,需要注意输入字符串的有效性和转换后数值的范围。如果可能,使用 strtolstrtollstrtoulstrtoullstrtod 等函数可以提供更精确的控制和错误处理机制。

0

评论区