C语言实现整数转换为字符串的函数,函数原型为void myitoa(int num,char *str)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言实现整数转换为字符串的函数,函数原型为void myitoa(int num,char *str)相关的知识,希望对你有一定的参考价值。
void myitoa(int num,char *str)
char *temp=str;
int n=0;
while(num)
*temp=num%10+'0';//转换成字符
printf("*temp=%c\n",*temp);
num/=10;
temp++;
n++;
*temp='\0';
temp=temp-1;
while(n>0)
*str++=*temp--;
n--;
*str='\0';
很奇怪,上面的函数就是行不通,比如num为12345,转换后的str[]字符串却为12321。看了好久都没找出原因?
(1)while循环中,屏蔽*str++=*temp--这句,只有printf("%c\n",*temp--);n--;测试,*temp的值没有错,如整数num为12345的话,依次输出1 2 3 4 5。
(2)while循环中如果printf("%c\n",*temp);*str++=*temp--;n--;则转换结果还是有误,如整数12345转换后的字符串却是12321
while循环是指while(n>0)这个循环
所以 数字的地位在字符串前面
第二个 倒转字符串 上 出了问题
*str++=*temp--; 是单向的赋值没有交换
循环控制 条件也不对
12345
得到字串
"54321"
n =5 temp 指向尾巴1,str指向头5
*str++=*temp--;
使得字符串变为"14321"
str ++ 后指向4
temp --后指向2
n=4
字符串变为"12321"
str ++ 后指向3
temp --后指向3
n = 3
字符串还是"12321"
str ++ 后指向后面的2 temp --后指向前面的2
n = 2
后面的2 刷复制到前面的 2
...............追问
第一个循环没有问题。整数12345转换后得到字符串“54321”。第二个循环中出现了问题,情况却是如你所说的,非常感谢
本回答被提问者和网友采纳 参考技术B 你看看你这两个指针指向的内存地址就知道了。char *temp=str;
这两个是指向同一地址的,像你那代码那么操作不乱才怪。
想法是对的,temp应该重新申请内存。追问
确实如你这样,太大意了。改过来了,OK!
C语言试题三十二之编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。
1、 题目
请编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。
2 、温馨提示
C试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问题的能力,帮助你成为C语言笔试、机试解题高手,帮助你拿到C语言工作的offer,每一个题目都附带源代码和运行结果,让你不再有任何困惑,妈妈再也不担心我的C语言了。如果程序有任何看不懂或者哪个步骤不理解的地方都可以加我微信(15874274916)私聊我,或者有更好的思路解决办法都可以加我微私聊,一起探讨、希望可以正真的帮助到你,同时也可以扫下面的二维码关注我微信公众号,比如你还对生活、美食或者其它方面都感兴趣,都可以加微信交流,博主擅长讲解计算机相关方面的知识、如果大家对计算机方向、前端、移动端、服务端、数据结构、算法、网络、高数等等一些列方向比较迷茫或者不知道要学哪些?或者具体怎么学?或者其它方向有任何困惑都可以找我交流,谢谢大家关注。
以上是关于C语言实现整数转换为字符串的函数,函数原型为void myitoa(int num,char *str)的主要内容,如果未能解决你的问题,请参考以下文章
C语言itoa()函数和atoi()函数详解(整数转字符C实现)