最近作一个题,用递归方法将整数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