最近作一個題,用遞歸方法將整數n轉換成爲字符串,作了半天作好了才發現有一個庫函數直接就能夠實現這個功能,真是日了狗了。。。。數組
小二,上代碼。。。ide
#include<stdio.h> #include<stdlib.h> #include<string.h> // 這個turnover函數是爲了將字符串調轉過來,由於convert函數中將n轉換成字符串後字符串是倒着的 // 就是利用了一箇中間變量將字符串數組s首尾依次交換 char *turnover(char *s) { int i,j; // 臨時變量 char c; // 臨時變量 j=strlen(s)-1; // 獲取字符串有字符的長度由於字符串後又'\0',因此減1 for(i=0;i<=j/2;i++) // 循環一次交換 { c=s[j]; s[j--]=s[i]; s[i]=c; } return s; } // 將整數n轉換成字符串 char *convert(int n,char *s) { char c[]={'0','\0'}; // 臨時變量,用於存儲從n上一次剝落的字符 c[0]=n%10+'0'; // 將n的個位轉化成字符,存儲在c[0]中 strcat(s,c); // 鏈接s與c n/=10; // n被剝落一位就減去一位 if(n!=0) // 遞歸開始。。。 convert(n,s); else return turnover(s); } int main() { int n; char s[100],*str; scanf("%d",&n); str=convert(n,s); printf("%s\n",str); }
其實將n轉換成字符串還有一個更方便的庫函數int sprintf(char *s,"......",各類參數);函數
這個函數第一個參數爲字符串首地址,第二個參數爲格式字符串,第三個爲格式控制。返回值爲字符字符串的長度。用法以下:spa
#include<stdio.h> #include<string.h> int main() { char buffer[80]; int n,i; scanf("%d",&n); i=sprintf(buffer,"%d",n); printf("%s\n",buffer); printf("%d",i); }
輸出結果爲:blog