字符串与数字的互转,atoi \itoa

题目:

字符串与数字的互转,atoi \itoa

Code(C):

atoi

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

int StrToInt(char *s);  

void main()
{
	char s[30];
	int n;
	printf("请输入一个字符串\n");
	gets(s);
	n = StrToInt(s);
	printf("字符串%s转化为数字是%d\n",s,n);
}

int StrToInt(char *s)
{
	int num = 0,i = 0,flag = 1;
	if(s == NULL)
	{
		printf("输入的字符串指针为0\0");
		exit(0);
	}
	if(s[0] == '\0')
	{
		printf("字符串为空\n");
		exit(0);
	}
	if(s[0] == '-')
	{
		flag = -1;
		i++;
	}
	else if(s[0] == '+')
	{
		flag = 1;
		i++;
	}
	while(s[i] != '\0')
	{
		if(s[i] >= '0' && s[i] <= '9')
		{
			num = num*10+s[i]-'0';
			i++;
		}
		else
		{
			printf("输入不合法!\n");
			exit(0);
		}
	}
	if(flag == -1)
		return (-1)*num;
	else 
		return num;
}


itoa

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

void IntToStr(int n,char *s);
void reverse(char *s,int start,int end);

void main()
{
	int n;
	char s[12];     //对于int,12位就可以了
	printf("请输入一个整数,实行整数转化为字符串\n");
	scanf("%d",&n);
	IntToStr(n,s);
	printf("整数%d转化为字符串为%s\n",n,s);
}

void IntToStr(int n,char *s)
{
	int m = abs(n),i = 1;
	if(s == NULL)
		exit(0);
	if(n == 0)       //输入为0要特殊对待
		s[i++] = '0';
	while(m)
	{
		s[i++] = m%10+'0';
		m /= 10;
	}
	s[i] = '\0';      //字符串的结束标志
	reverse(s,1,i-1); //字符串反转
	if(n >= 0)        //s[0]存放符号位
		s[0] = ' ';
	else
		s[0] = '-';
}

void reverse(char *s,int start,int end)
{
	char temp;
	while(start < end)
	{
		temp = s[start];
		s[start] = s[end];
		s[end] = temp;
		start++;
		end--;
	}
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值