C语言itoa函数自己编写,编程问题求解答

C语言itoa函数自己编写,编程问题求解答,第1张

itoa()函数可以实现,根据itoa()第三个参数(2/8/10)可以进行二、八、十六进制的转换,转换后为字符串,如要求是int,可以用atoi实现字符串与int之间的转换举例:#include

"stdioh"#include

"stdlibh"int

main(){int

L1;printf("输入数字\n");scanf("%d",

&L1);char

str1[256];char

str2[256];char

str3[256];itoa(L1,

str1,

2);itoa(L1,

str2,

8);itoa(L1,

str3,

16);printf("2进制:%s\n8进制:%s\n16进制:%s\n",str1,str2,str3);return

0;}

功 能:把一整数转换为字符串

用 法:char itoa(int value, char string, int radix);

详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写

参数:

value: 待转化的整数。

radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

string: 保存转换后得到的字符串。

返回值:

char : 指向生成的字符串, 同string。

备注:该函数的头文件是"stdlibh"

参看>

供参考:

#include<stdioh>

//2 <= base <= 36

#define MAX_INTEGER_BIT 33

char itos_base(int n, int base)

{

static char res[MAX_INTEGER_BIT];

for (int i = 0; i < MAX_INTEGER_BIT; i++)

{

res[i] = 0;

}

int index = MAX_INTEGER_BIT - 2;

do

{

res[index--] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[n % base];

n /= base;

} while (n > 0);

return res + index + 1;

}

char itos(int n)

{

return itos_base(n, 10);

}

int  main()

{

printf("%s\n", itos(1234567));

printf("%s\n", itos(0));

printf("%s\n", itos(99));

return 0;

}

运行截图

方法有多种:

可以用 ConverToInt32(string)和Int32Parse(string)或者直接intParse(string)

也可以用 Int32TryParse(string,out int result)或者:intTryParse(string,out int result)来转换。

TryParse的返回值是一个bool类型的值,指示是否转换成功,转换成功后第二个参数就是你已经转换成功的值:

如:

int result;

if(Int32TryParse("20", out result)) {

//转换成功

} else {

//转换失败

}

从你的描述中可以看出,你对itoa函数还没有完全了解,下面先列出itoa函数的说明:

原 型:

char itoa(int value, char string, int radix);

功 能:

把一整数转换为字符串

用 法:

itoa(i,num,10);

参数说明:

i 需要转换成字符的数字

num 转换后保存字符的变量

10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型

现在分析你的描述中的程序段的问题:

写法1:

int a=123;

char str="123"; // str为一指向常量字符串的指针

itoa(a,str,10); // 将str作为第2个参数传入itoa,用于保存转换后的结果字符串

此程序段运行过程中会崩溃,原因是指针str指向的是只读存储区,当对此只读存储区进行写 *** 作时,会崩溃,即出现你说的错误

写法2:

int a=123;

char str[4] = "123"; // 定义了一个大小为4的字符数组str,此处可以不初始化

itoa(a,str,10); // 将str作为第2个参数传入itoa,用于保存转换后的结果字符串

此程序段运行正常,原因是字符数组str正好能保存转换后的结果

注意:

1、对itoa函数第二个参数的初始化基本没有必要,关键是要保证其指向的空间能保存转换结果字符串。

2、你说的那个结束符和能否使用itoa没有关系。

itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在头文件中包含这个函数。在中与之有相反功能的函数是atoi。功能:把一整数转换为字符串。char itoa(int value, char string, int radix); 头文件: 程序例: #include #include int main() { int number = 123456; char string[25]; itoa(number, string, 10); printf("integer = %d string = %s\n", number, string); return 0; }

范围为int的范围,-32768到32767

itoa的用法:

itoa(i,num,10);

i 需要转换成字符的数字

num 转换后保存字符的变量

10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型

原形:char itoa(int value, char string, int radix);

以上就是关于C语言讲一个十进制数转化为二,八,十六进制(函数调用全部的内容,包括:C语言讲一个十进制数转化为二,八,十六进制(函数调用、itoa函数中的i是整型,那a代表什么、C语言itoa函数自己编写,编程问题求解答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8849083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存