1. 程式人生 > >自寫函式實現數字與字串之間的相互轉化,不使用itoa函式

自寫函式實現數字與字串之間的相互轉化,不使用itoa函式

一、自定義函式實現

思路:整數轉化為字串,可以採用加'0',然後再逆序,整數加'0'就會隱性轉化為char型別的數;

      字串轉化為整數,可以採用減'0',再乘以10累加的方法,字串減'0'就會隱性的轉化為int型別的數。

<span style="font-family:SimSun;font-size:18px;">	//***************************************************************
	//實現數字到字串的轉化,不借助itoa函式
	int num=12345,j=0,i=0;
	char temp[7]={0},str[7]={0};//若不初始化則,需要加temp[j]=0和str[i]=0
	while(num)
	{
		temp[j]=num%10+'0';
		j++;
		num/=10;
	}
	//temp[j]=0;
	printf("temp=%s\n",temp);//倒序的字串
	j--;
	while(j>=0)
	{
		str[i]=temp[j];
		j--;
		i++;
	}
	//str[i]=0;
	printf("string=%s\n",str);//這裡將其逆序,

	i=0;
	int num_str=0;
	while(i<strlen(str))//字元型轉化為整數
	{
		int mid=str[i]-'0';
		num_str=num_str*10+mid;
		i++;
	}
	printf("int num=%d\n",num_str);
	//***************************************************************</span>
截圖如下:

二、擴充套件,使用itoa(),atoi()函式

(1)。itoa()函式

C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串。

函式原型:char*itoa(intvalue,char*string,intradix);

itoa()函式有3個引數:第一個引數是要轉換的數字,第二個引數是要寫入轉換結果的目標字串,第三個引數是轉移數字時所用 的基數。在上例中,轉換基數為10。10:十進位制;2:二進位制...

(2)。atoi()函式

函式原型:int atoi(const char *nptr);

緊接上面的程式碼
<span style="font-family:SimSun;font-size:18px;">        num=12345;
	int i_strght=atoi(str);
	printf("straight int=%d\n",i_strght);
	char straight_char[7];
	itoa(num,straight_char,10);
	printf("straight char=%s\n",straight_char);</span>
截圖如下