itoa和atoi的用法及功能

本文介绍了itoa和atoi函数的使用方法及注意事项。通过示例代码展示了如何将整数转换为不同进制的字符串,以及如何将字符串转换回整数。同时探讨了atoi在处理非数字字符串时的行为。
/*
itoa()函数有3个参数:第一个是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用的基数。

#include<stdlib.h>
#include<stdio.h>
int main()
{  
    int num = 10;  
    char str[100];  
    itoa(num, str, 2);     //将10转换成2进制 
    printf("%s\n", str);  
    system("pause");
    return 0; 
}


#include<stdlib.h>
#include<stdio.h>
int main()
{  
    int num = 9;  
    char str[100];  
    itoa(num, str, 8);    //将9转换成8进制 
    printf("%s\n", str);    //itoa输出的是一个一个字符。想变成一个数,double型,int型?看下面 
    system("pause");
    return 0; 
}
*/
//atoi把字符串转换成整型数 
#include<stdlib.h>
#include<stdio.h>
int main()
{  
    int num = 10;  
    char str[100];  
    int n = atoi(itoa(num, str, 2));   //此处即时其用法   
    printf("%d\n",n);  
    system("pause");
    return 0; 
}

/* 
如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时
停止转换,返回整型数。否则,返回零.
头文件: #include <stdlib.h>
*/
//再附上两个
#include<stdlib.h> 
#include<stdio.h> 
intmain(void) 
{ 
   float n; 
   char const *str="12345.67"; 
   n=atoi(str); 
   printf("string=%sinteger=%f\n",str,n); 
   return 0; 
}
执行结果:
string = 12345.67 integer = 12345.000000

#include<stdlib.h> 
#include<stdio.h> 
int main() 
{ 
    chara[]="-100"; 
    charb[]="123"; 
    intc; 
    c=atoi(a)+atoi(b); 
    printf("c=%d\n",c); 
    return 0; 
} 

### itoa atoi用法及区别 #### 一、`atoi()` 函数 `atoi()` 是标准库中的函数,用于将字符串转换为整数。它的定义如下: ```c int atoi(const char *str); ``` 该函数接收一个 `const char*` 类型的参数,表示待转换的字符串,并返回对应的整数值[^1]。 - **功能**: 将字符串形式的数字(如 `"123"`)转换为其实际的整数值。 - **注意事项**: - 如果输入的字符串不是有效的数字格式,则会返回零值作为错误处理的结果。 示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { const char* str = "123"; int num = atoi(str); printf("The integer is %d\n", num); // 输出 The integer is 123 return 0; } ``` --- #### 二、`itoa()` 函数 `itoa()` 并不属于 C 标准库的一部分,而是某些编译器实现的一个扩展函数。它主要用于将整数转换为字符串。其定义通常如下所示: ```c char *itoa(int value, char *string, int radix); ``` 此函数接受三个参数:第一个是要被转换的整数值;第二个是指向存储结果字符串的目标缓冲区地址;第三个则是指定转换所使用的基数(即进制),可以是从 2 到 36 的任意值[^2][^3]。 - **功能**: 把给定的整数按照特定的进制转存到字符数组里形成相应的字符串表达形式。 - **注意要点**: - 需要提供足够的空间来保存最终得到的字符串版本数据,包括终止符 '\0' 在内的全部长度都应考虑进去[^3]。 实例演示: ```c #include <stdio.h> void example_itoa(void){ int number = 255; char buffer[32]; itoa(number, buffer, 10); /* 十进制 */ puts(buffer); // 打印 '255' itoa(number, buffer, 16); /* 十六进制 */ puts(buffer); // 打印 'ff' } int main(){ example_itoa(); return 0; } ``` --- #### 三、主要差异对比分析 | 特性 | `atoi()` | `itoa()` | |-------------------|---------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| | 功能方向 | 字符串 -> 整形 | 整形 -> 字符串 | | 参数数量 | 接收单个参数 | 要求传入三个参数 | | 是否属于ANSI-C | 属于 ANSI-C | 不属于 ANSI-C | | 错误情况下的行为 | 当无法解析有效数值时,默认返回0 | 若目标buffer容量不足或者其它异常状况下可能引发未定义的行为 | 总结来说,这两个函数正好互逆操作——一个是把文本描述的数量还原回机器可计算的形式(`atoi`);另一个则负责呈现内部状态给人类阅读理解方便的形式(`itoa`)^. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值