天天看點

atoi和itoa函數

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Myatoi(const char* str)
{
	if(str==NULL)//判斷指針是否為空
	{
		printf("Pointer is NULL\0");
		return 0;
	}
	while(*str==' ')//忽略前導空字元
		str++;
	int sign=1;//判斷符号
	if(*str=='-')
		sign=-1;
	if(*str=='+' || *str=='-')
		++str;//str指向符号位的後一位
	int integer=0;
	while(*str<='9' && *str>='0'){
		integer=integer*10+*str-'0';
		++str;
	}
	return integer*sign;
}

char* Myitoa(int value,char *str)
{
	if(value==0)
		return "0";
	int sign=1;
	char *tempStr=str;
	if(value<0){
		str[0]='-';//第一個是負号
		value=-value;
		sign=-1;
		str++;
	}
	while(value!=0){
		*str=value%10+'0';
		value=value/10;
		++str;
	}
	*str='\0';
	if(sign==1){//無符号時從0開始逆序
		int i=0;
		int j=strlen(tempStr)-1;//注意此處下标的值
		while(i<j)
		{
			char temp;
			temp=tempStr[i];
			tempStr[i]=tempStr[j];
			tempStr[j]=temp;
			i++;
			j--;
		}
	}else{
	
		int i=1;//有符号時從1開始逆序
		int j=strlen(tempStr)-1;//注意此處下标的值
		while(i<j)
		{
			char temp;
			temp=tempStr[i];
			tempStr[i]=tempStr[j];
			tempStr[j]=temp;
			i++;
			j--;
		}	
		
	}
	return tempStr;
}
int main()
{
	int value=-10;
	char str[100];
	printf("%s\n",Myitoa(value,str));
	return 0;
}
           
c++

繼續閱讀