itoa的用法

功能:将任意类型的整数转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi

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

int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等,因此可以使用该函数实现十进制转换成二进制或8进制或16进制。

#include <stdlib.h>
#include <stdio.h>
int main(void)
{int number=123456;char string[25];itoa(number,string,10);printf("integer=%d string=%s\n",number,string);return 0;
}
那么如何来用自己的语言来写呢?

#include <iostream>
#include <stdio.h>
//将整数转换为十进制字符串,并且不用itoa
int main()
{int num=12345;int i=0,j=0;char str[7],temp[7];while (num){temp[i++]=num%10+'0';num/=10;}temp[i]='\0';i=i-1;while (i>=0){str[j++]=temp[i--];}str[j]='\0';printf("string=%s\n",str);return 0;
}
方法是先加‘0’,再逆序的办法,整数加'0'就会隐形的转换为char型的数。

但需要注意的是:负整数不能通过itoa被转化为二进制、八进制、十六进制,而正整数可以。请看如下的代码:

#include <stdio.h>
#include<stdlib.h>  void main()
{char str[8];  int   i=-2;  itoa(i,str,2);  printf("%d的二进制数为:  %s\n\n",i,str); 
}
vc输出:

-2的二进制数为:  11111111111111111111111111111110

并且出现警示框:

正整数就可以了。

#include <stdio.h>
#include<stdlib.h>  void main()
{char str[8];  int   i=2;  itoa(i,str,2);  printf("%d的二进制数为:  %s\n\n",i,str); }

结果:

2的二进制数为:  10

请按任意键继续. . .

上述代码不能实现负整数与0转化为字符串,补充另一种做法:

#include <iostream>
#include <cstring>
#include <stdlib.h>
using namespace std;
void int2str(int n,char* str)
//n可以为正整数、0、负整数
{
char temp[10];
if (str==NULL)
{
return;
}
int i=0;
int n2=n>=0?n:-n;//n2为n的绝对值
if (n2==0)
{
temp[i++]='0';
}
while (n2)
{
temp[i++]=n2%10+'0';
n2/=10;
}
temp[i]='\0';
i--;
int j=0;
if (n<0)
{
str[j]='-';
j++;
}
while (i>=0)
{
str[j++]=temp[i--];
}
str[j]='\0';
}
void test(char* testname,int n,char* expected)
{
if(testname!=NULL)
cout<<testname<<" "<<"begins:";
char str[10];
int2str(n,str);
if (strcmp(str,expected)==0)
{
cout<<"passed"<<endl;
}
else
{
cout<<"Failed"<<endl;
}
}
//输入150
void test2()
{
int n;
cin>>n;
test("test1",n,"150");

}
//输入0
void test3()
{
int n;
cin>>n;
test("test2",n,"0");

}
//输入-50
void test4()
{
int n;
cin>>n;
test("test3",n,"-50");

}
void main()
{
test2();
test3();
test4();
}






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat与Gzip与缓存

国内私募机构九鼎控股打造APP&#xff0c;来就送 20元现金领取地址&#xff1a;http://jdb.jiudingcapital.com/phone.html内部邀请码&#xff1a;C8E245J &#xff08;不写邀请码&#xff0c;没有现金送&#xff09;国内私募机构九鼎控股打造&#xff0c;九鼎投资是在全国股份…

java竖向菜单,垂直滑动菜单

www.lanrentuku.comtd {font-size: 12px;}width"200" />height9 src"images/bit05.gif" width8alignabsMiddle> href"javascript:void(null)">文管产品 src"images/bit06.gif" width8 alignabsMiddle> href"http://w…

作为IT从业者,你是如何做好个人职业规划?

前言 写这篇文章的原因是因为你前端时间看到朋友在公众号&#xff08;Marno&#xff09;发的一篇文章《27岁程序员职业生涯的“中年危机”》有感而发&#xff0c;谈谈自己对IT从业人员的一些职业规划上的想法。本篇文章是我在坐地铁的时候在手机上码出来的&#xff0c;写的不好…

将一句话的单词进行倒置,标点符号不倒换。比如一句话:“i love you.”倒换后变为you. love i

#include <string.h> #include <stdio.h> #include <stdlib.h>//将一句话的单词进行倒置&#xff0c;标点符号不倒换。比如一句话:“i love you.”倒换后变为"you. love i" void reverse(char *str) {int i0,jstrlen(str)-1;int begin,end;char te…

JS一些实用的方法

1、首次为变量赋值时务必使用var关键字变量没有声明而直接赋值得话&#xff0c;默认会作为一个新的全局变量&#xff0c;要尽量避免使用全局变量。2、使用取代和!操作符会在需要的情况下自动转换数据类型。但和!不会&#xff0c;它们会同时比较值和数据类型&#xff0c;这也使得…

[转]第一章 Windows Shell是什么 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987862】...

一个操作系统外壳的不错的定义是它是一个系统提供的用户界面&#xff0c;它允许用户执行公共的任务&#xff0c;如访问文件系统&#xff0c;导出执行程序&#xff0c;改变系统设置等。MS-DOS有一个Command.COM扮演着这个角色。然而Windows已经有了图形界面环境&#xff0c;他的…

20155222卢梓杰 《Java程序设计》第1周学习总结

20155222 《Java程序设计》第1周学习总结 教材学习内容总结 JDK是一个工具程序&#xff0c;包括了JAVA程序语言&#xff0c;工具程序与JRE&#xff0c;JRE包括了部署技术&#xff0c;JAVA SE API 与 JVM。 教材学习中的问题和解决过程 第一章&#xff1a;JDK的变量和选项如何设…

字符串常量与字符串变量

参考&#xff1a;http://blog.csdn.net/chenwenshi/article/details/6702576 定义&#xff1a;在一个双引号“ ”内的字符序列或者转义字符序列称为字符串常量 例如&#xff1a;“HI HI&#xff01;” “a” “\n\t” 这些字符串常量是不能改变的&#xff0c;如果试图改变指针…

java资源分配算法,java - 资源分配与动态规划算法 - 堆栈内存溢出

给定一组函数f1 ... fn(离散时间)和时间限制(int)&#xff0c;应找到最大输出&#xff0c;即在不同函数之间分配时间以最大化所用函数输出的总和。对于任何函数&#xff0c;任何时候的值表示如果用于所述时间的函数的总输出。 即F(2)函数的总输出&#xff0c;如果使用2秒。 不是…

Factorial Trailing Zeroes 172

题目描述&#xff1a; 给出一个integer n&#xff0c;计算n&#xff01;结尾0的个数 题目分析&#xff1a; 考虑暴力&#xff0c;计算n&#xff01;统计最后面0的个数。先不说数字溢出&#xff0c;其次n是一个integer &#xff0c;O(n)复杂度超时 我们接着考虑&#xff0c;产生…

DateTime.Now.ToString() 用法

//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString("d"); //2008年4月24日 16:30:15 System.DateTime.Now.ToString("F"); //2008年4月24日 16:30 System.DateTime.No…

GAP平台

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/u/2441327/blog/846754

二进制与十进制的转换

本文参考:http://www.360doc.com/content/11/0308/14/5327079_99222581.shtml文献整理所得。 1.正整数的十进制转换为二进制. 十进制整数转换为二进制整数采用"除2取余&#xff0c;逆序排列"法。具体做法是&#xff1a;用2整除十进制整数&#xff0c;可以得到一个商…

php记录已经点击过,最近一次的PHP面试题记录,office已到手!

1、explain 具体哪些等级具体有 system、const、range、index、all2、MySQL 优化避免全表查询&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索引应尽量避免在 where 子句中对字段进行 null 值判断&#xff0c;否则将导致引擎放弃使用索引而进行全表扫描 (可以将字…

原生Ajax讲解

典型的http通信&#xff1a;浏览器向服务器发出请求&#xff0c;服务器向客户端返回响应&#xff0c;浏览器重新加载页面&#xff0c;这种不连续的页面加载方式导致用户的体验变得杂乱&#xff0c;缺乏连贯性。 如&#xff1a; 在一般的web应用程序中&#xff0c;用户填写表单字…

16、Python与设计模式--模板模式

一、股票查询客户端 投资股票是种常见的理财方式&#xff0c;我国股民越来越多&#xff0c;实时查询股票的需求也越来越大。今天&#xff0c;我们通过一个简单的股票查询客户端来认识一种简单的设计模式&#xff1a;模板模式。根据股票代码来查询股价分为如下几个步骤&#xff…

避免滥用子选择器

CSS的选择符是有权重的&#xff0c;当不同选择符的样式设置有冲突时&#xff0c;会采用权重高的选择符设置的样式。 如果CSS选择符权重相同&#xff0c;那么样式会遵循就近原则&#xff0c;哪个选择符最后定义&#xff0c;就采用哪个选择符的样式。 如果忽略了CSS选择符权重&am…

C++中的空类,默认产生哪些类成员函数?

class Empty { public:/*Empty();//默认构造函数Empty(const Empty& rhs);//拷贝构造函数~Empty();//析构函数Empty& operator(const Empty& rhs);//赋值函数Empty* operator&();//取地址运算符const Empty* operator&() const;//取址运算符 const */ prot…

php exist echo,PHP函数file_exists介绍

&#xfeff;定义和用法file_exists() 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true&#xff0c;否则返回 false。exists中文翻译为存在的意思。语法file_exists(path)例子Example #1<?phpecho file_exists("test.txt");?>输出&#x…

闭包应用之延迟函数setTimeout

根据HTML 5标准&#xff0c;setTimeout推迟执行的时间&#xff0c;最少是5毫秒。如果小于这个值&#xff0c;会被自动增加到5ms。 每一个setTimeout在执行时&#xff0c;会返回一个唯一ID&#xff0c;把该ID保存在一个变量中&#xff0c;并传入clearTimeout&#xff0c;可以清除…