C语言,将一个整数转化为字符串再与另一字符串连接。(用指针)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,将一个整数转化为字符串再与另一字符串连接。(用指针)相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void main()

void turn(char *m,int t);
void transform(char *m,char *n);
void stract(char *p,char *n);
char a[20],b[20],c[20],*m,*n,*p;
int t;
scanf("%s",a);
scanf("%d",&t);
m=b;
n=c;
p=a;
turn(m,t);
transform(m,n);
stract(p,n);
printf("%s",p);

void turn(char *m,int t)//*将一个整数转化为字符,如对123求余得3则*p=3,12再求余则得*(p+1)=2,有1<10则*(p+2)=1,再使*(p+3)='\0'则完成转换*//

int n;
char *p=m;
while(n!=0)

n=t%10;
*p=n;
t=t/10;
if(t<10) *(p+1)=t;break;
p++;

*(p+2)='\0';

void transform(char *m,char *n)//*使转换的字符串反序排列*//

int i,j,t;
for(i=0;i<20;i++)
if(*(m+i)='\0') t=i;
for(i=t-1,j=0;i>=0;i--,j++)
*(n+j)=*(m+i);
*(n+j)='\0';

void stract(char *a,char *b)//*将两个字符串连接起来*//

char *m=a,*n=b;
while(*m!='\0') m++;
while(*n!='\0')

*m=*n;
m++;
n++;

*m='\0';


注释是我的思路,我觉得没错呀,为啥输出结果不正确。
希望高手给我解答一下,非常困惑!

参考技术A 错误在注释中
#include<stdio.h>
void
main()

void
turn(char
*m,int
t);
void
transform(char
*m,char
*n);
void
stract(char
*p,char
*n);
char
a[20],b[20],c[20],*m,*n,*p;
int
t;
scanf("%s",a);
scanf("%d",&t);
m=b;
n=c;
p=a;
turn(m,t);
transform(m,n);
stract(p,n);
printf("%s",p);

void
turn(char
*m,int
t)//*将一个整数转化为字符,如对123求余得3则*p=3,12再求余则得*(p+1)=2,有1<10则*(p+2)=1,再使*(p+3)='\0'则完成转换*//

int
n;
char
*p=m;
while(t!=0)//是t判断条件

n=t%10;
*p=n+'0';//转换成字符要+'0'
t=t/10;
if(t<10)
*(p+1)=t+'0';break;
p++;

*(p+2)='\0';

void
transform(char
*m,char
*n)//*使转换的字符串反序排列*//

int
i,j,t;
for(i=0;i<20;i++)
if(*(m+i)=='\0')
t=i;//==是比较,=是赋值
for(i=t-1,j=0;i>=0;i--,j++)
*(n+j)=*(m+i);
*(n+j)='\0';

void
stract(char
*a,char
*b)//*将两个字符串连接起来*//

char
*m=a,*n=b;
while(*m!='\0')
m++;
while(*n!='\0')

*m=*n;
m++;
n++;

*m='\0';
参考技术B char name[8];//存放新字符串
char i = 8;//需要转换为字符串的变量
sprintf(name,"String%02d",i);//将String字符串与变量(转换为字符串)拼接
最终转换后存放到name中,其值为字符串:“String08”
参考技术C 错误在注释中
#include<stdio.h>
void main()

void turn(char *m,int t);
void transform(char *m,char *n);
void stract(char *p,char *n);
char a[20],b[20],c[20],*m,*n,*p;
int t;
scanf("%s",a);
scanf("%d",&t);
m=b;
n=c;
p=a;
turn(m,t);
transform(m,n);
stract(p,n);
printf("%s",p);

void turn(char *m,int t)//*将一个整数转化为字符,如对123求余得3则*p=3,12再求余则得*(p+1)=2,有1<10则*(p+2)=1,再使*(p+3)='\0'则完成转换*//

int n;
char *p=m;

while(t!=0)//是t判断条件

n=t%10;
*p=n+'0';//转换成字符要+'0'
t=t/10;
if(t<10) *(p+1)=t+'0';break;
p++;

*(p+2)='\0';

void transform(char *m,char *n)//*使转换的字符串反序排列*//

int i,j,t;
for(i=0;i<20;i++)
if(*(m+i)=='\0') t=i;//==是比较,=是赋值
for(i=t-1,j=0;i>=0;i--,j++)
*(n+j)=*(m+i);
*(n+j)='\0';

void stract(char *a,char *b)//*将两个字符串连接起来*//

char *m=a,*n=b;
while(*m!='\0') m++;
while(*n!='\0')

*m=*n;
m++;
n++;

*m='\0';
本回答被提问者采纳

C语言输入一个整数转化为字符串

将数字转化为对应的字符,可以通过n%10+48来实现,也可以通过n%10+‘0‘来实现,因为‘0’的ASCII码的数值就是48

因为字符串‘0’ 对应的10进制 整数是48 字符串‘9‘对应的10进制整数是57 所以 整数0-->0+48=48=‘0‘

2、该算法中建立了一个数组buffer用来存放字符串,通过递归调用让数字前往后依次转化为字符,然后通过指针p的自增,将字符串依次存放到数组中,每次p自增之后都赋值‘\0’,当还有新的字符需要转化的时候,就会有新的值覆盖‘\0’,当没有新的数字转化的时候,就最为字符串的结束标志。

以上是关于C语言,将一个整数转化为字符串再与另一字符串连接。(用指针)的主要内容,如果未能解决你的问题,请参考以下文章

c语言中如何将字符串转化成整数型并输出?

c语言中如何将字符串转化成整数型并输出?

c语言 把某一字符串中的其中一段字符串替换成另一串字符串。

C语言,整数数组转化为字符串

在C语言中怎么把一个整数转化为字符串

字符串转化为整数