字符串函数—atoi()、itoa()等详解及实现(完整版)

本文介绍C/C++中数字与字符串相互转换的方法,包括itoa(), atoi()等标准库函数的使用,并通过实例展示了如何利用atoi()实现简易计算器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.int/float to string/array:
  C/C++语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。
itoa():将整型值转换为字符串。
ltoa():将长整型值转换为字符串。
ultoa():将无符号长整型值转换为字符串。
gcvt():将浮点型数转换为字符串,取四舍五入。
ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
fcvt():指定位数为转换精度,其余同ecvt()。
除此外,还可以使用sprintf系列函数把数字转换成字符串,但其比itoa()系列函数运行速度慢。
2. string/array to int/float
  C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。
atoi():将字符串转换为整型值。
atol():将字符串转换为长整型值。
atof():将字符串转换为双精度浮点型值。
strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。

实例:
1.函数名: atoi
功 能: 将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时(’\0’)才结束转化,并将结果返回(返回转换后的整型数)。
用 法: int atoi(const char *nptr);

//利用main函数参数实现简易计算器
#include <stdio.h>
#include <windows.h>
#include <string.h>

//加法
int Add(int x, int y)
{
    return x + y;
}
//减法
int Sub(int x, int y)
{
    return x - y;
}
//乘法
int Mul(int x, int y)
{
    return x*y;
}
//除法
int Div(int x,int y)
{
    if (y == 0)
    {
        return 0;
    }
    else
    {
        return x / y;
    }
}
int main(int argc, char *argv[])
{
    if (argc != 4)
    {
        printf("输入参数太少!\n");
        system("pause");
        return 0;
    }
    int num1 = atoi(argv[2]);
    int num2 = atoi(argv[3]);
    if (strcmp(argv[1],"-a") == 0)
    {
        int ret = Add(num1, num2);
        printf("ret = %d\n", ret);
    }
    else if (strcmp(argv[1], "-s") == 0)
    {
        int ret = Sub(num1, num2);
        printf("ret = %d\n", ret);
    }
    else if (strcmp(argv[1], "-m") == 0)
    {
        int ret = Mul(num1, num2);
        printf("ret = %d\n", ret);
    }
    else if (strcmp(argv[1], "-d") == 0)
    {
        int ret = Div(num1, num2);
        if (ret == 0)
        {
            printf("除数不能为0\n");
        }
        else
        {
            printf("ret = %d\n", ret);
        }
    }
    else
    {
        printf("输入参数错误!\n");
    }
    system("pause");
    return 0;
}

补充:
main函数原型:

int main(int argc,char *argv[],char *envp[])

这里有三个参数:
  第一个参数: argc是个整型变量,表示命令行参数的个数(含第一个参数)。
  第二个参数: argv是个字符指针的数组,每个元素是一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)。
  第三个参数: envp是字符指针的数组,数组的每个元素是一个指向一个环境变量(字符串)的字符指针。

2.函数名: itoa
用法:char *itoa( int value, char *string,int radix);
原型说明:
value:欲转换的数据。
string:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。
功能:将整数value 转换成字符串存入string 指向的内存空间 ,radix 为转换时所用基数(保存到字符串中的数据的进制基数)。
返回值:函数返回一个指向 str,无错误返回。

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int num = 10;
    char str[100];
    itoa(num, str, 2);
    printf("%s\n", str);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值