字符串和对应的整数之间的转换

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下分别用my_atoi()函数将字符串转换为对应的整数,用itoa()函数将整数转换为字符串的。

       atoi     把字符串转换成整型数
       itoa     把一整数转换为字符串

1、实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。

比如:输入字符串“1234”,返回数字1234。

输入字符串“+1234”,返回数字1234.

输入字符串“-1234”,返回数字-1234.

代码如下:

#include<stdio.h>
#include<assert.h>
#include<ctype.h>
#include<stdlib.h>

int my_atoi(char *p)
{
	int flag=1,rav=0;
	assert(p);
	while(isspace(*p))//判断指针是否为空白字符
	{
		*p++;
	}
	if(*p==‘-‘)
	{
		flag=-1;//flag保存符号正负
	}
	if(*p==‘-‘||*p==‘+‘)//如果有符号位后移
	{
		p++;
	}
	while(*p)//依次将数字中每一位赋给rav,此判断条件等价于while(*p!=‘\0‘)
	{
		if((*p>=‘0‘)&&(*p<=‘9‘))
		{
			rav=rav*10+(*p-‘0‘);//*p-‘0‘是每一次取出来的数字
		}
		p++;
	}
        return flag*rav;//返回符号和数字的积
}
int main()
{
	char str[10];
        gets(str);//输入一个字符串
	printf("%d\n",my_atoi(str));
	system("pause");
	return 0;
}

2、实现一个函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中。

代码如下:

#include<stdio.h>
#include<stdlib.h>

void reverse(char str[],int len)//逆序整个字符数组
{
	int left=0;
	int right=len-1;
	while(left<right)
	{
		char temp=str[left];
		str[left]=str[right];
		str[right]=temp;
		left++;
		right--;
	}
}

void itoa(int num, char str[])
{
    int i=0,j,flag;
    flag=num;//flag保存符号
    if(num<0)//如果输入的数字为负数时,转化成正数
     	num=-num;
    while(num)
    {
		str[i++]=num%10+‘0‘;//数字逆序存入字符数组中
	    num/=10;
	}
    if(flag<0)
	{
		str[i++]=‘-‘;//字符数组中存入符号
	}
    str[i]=‘\0‘;
    reverse(str,i);
}

int main(void)
{ 
	char str[20];
	int num;
        scanf("%d",&num);
	itoa(num,str);
	printf("%s\n",str);
    system("pause");
    return 0;
}
时间: 2024-10-26 02:36:15

字符串和对应的整数之间的转换的相关文章

Java 带分隔字符串、字符串数组和 ArrayList&lt;String&gt; 之间的转换

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 一.先来认识一下标题说的这三件东西,也许描述的不清楚,但有了下面的例子,就不会有歧义了 1.带分隔字符串是这样的: String seperate

字符串与整数之间的转换

1.如何将字符串String转化为整数int  int i = Integer.parseInt(str);   int i = Integer.valueOf(my_str).intValue();    注: 字串转成Double, Float, Long的方法大同小异. 2.如何将字符串String转化为Integer   Integer integer=Integer.valueOf(i)3.如何将整数 int 转换成字串 String? 答:有三种方法:   String s = St

ip(点分十进制 &lt;==&gt; 二进制整数)之间的转换

linux的套接字部分比较容易混乱,在这里稍微总结一下. 地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换. 地址转换函数有四个:其中inet_addr 和 inet_ntoa适用于IPv4,inet_pton 和 inet_ntop同时适于用IPv4和IPv6. 套接字地址结构分为IPv4套接字地址结构sockaddr_in和IPv6套接字地址结构sockaddr_in6.其中IPv4的套接字地址结构如下. IPv4套接字地址结构:(定义在<netinet/in.h

Python—IP地址与整数之间的转换

1. 将整数转换成IP: 思路:将IP地址转换成无符号32位的二进制,再8位进行分割,每8位转换成十进制即可. #!usr/bin/python 2 #encoding=utf-8 3 #1. 将整数转换成32位无符号二进制 4 def intToIp(num): 5 s = [] 6 g = [] 7 h = [] 8 for i in range(32): 9 a = num%2 10 s.insert(0,a) 11 num = num/2 12 print s 13 #2. 每8位进行分

Jackson如何实现json字符串和泛型List集合之间的转换

前言: Jackson常用方法:   Jackson是处理一般的java对象和json之间的转换常用的两个方法是ObjectMapper类的writeValueAsString()和readValue()两个方法就可以实现. 但是,如果是要转成指定泛型的List集合,如List<User>.就需要先反序列化复杂类型为泛型 Collection Type; 举例说明: 如果是List<User>集合,那么使用ObjectMapper的getTypeFactory().construc

angular2 ----字符串、对象、base64 之间的转换

1. JSON对象转化为字符串 let obj = { "name":Ayinger; "sex":"女"; } let str = JSON.stringify(obj); //结果:str = " { "name" : "Ayinger" , "sex" : "女" } "; 2. 字符串转换为JSON对象 let obj1 = JSON.pa

python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 16进制转10进制: int('0x10', 16)  ==>  16 类似的还有oct(), bin() ------------------- 字符串转整数: 10进制字符串: int('10')  ==>  10 16进制字符串: int('10', 16)  ==>  16 16进

数字与字符串之间的转换

char*itoa(intvalue,char*string,intradix); int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等 头文件: <stdlib.h> atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型数) toa

有关包装类拆箱、装箱和整型与字符串型之间的转换

原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5462489.html 1.8种基本数据类型都有各自的包装类,其对应关系为: 基本————————————包装类 byte————————————Byte short———————————Short char————————————Char int————————————Integer long————————————Long float————————————Float double———