关于字符串输出的有关问题

关于字符串输出的问题
#include<stdio.h>
#include<stdlib.h>
void myprint(char *a,int x,char *b,int y)
{
char name[1024];//定义个字符串接收结果
 
int n=0,i,m;

m=(x>y?x:y)+1;//m的大小是两个字符串长度中最长的那一个 +1
//目的是为了防止计算时有进位操作 

name[m+1]='\0'; //m+1的位置加上字符串结束符 

while(m>=0)
{
i=(*(a+x)-'0')+(*(b+y)-'0')+n;//两个字符转成数字相加+n(进位时的数值) 

name[m]=i%10+'0';//把数值的尾数转成相应的字符存入字符串 

if(i>10)//判断结果确定是否有进位 
n=1;
else
n=0;

if(x==0)//循环到这里表明X=0 的下标以计算,将它的结果置0,以免影响计算结果 
{
*(a+x)='0';
}

if(y==0)//这时也是上面相同的考虑,主要是针对两个字符串,位数不同而设定 
{
*(b+y)='0';
}

m--;
x--;
y--;

if(x<0)x=0;//为防止出现name[ -1 ]越界情况强行置 0; 
if(y<0)y=0;
}
puts(name);
}
void myoutput(char *a,char *b)//这个函数是计算两个字符串长度的 
{
int x=strlen(a);
int y=strlen(b);
myprint(a,x,b,y);
}

int main()
{
char a[100];
char b[100];
puts("请输入数字:");
gets(a);
puts("请输入第二个数字:");
gets(b);

myoutput(a,b);


return 0;
}

前两天看论坛。看看高手们在讨论如何计算大数问题。这两天琢磨着琢磨着自己写一个。今天出来了。原理上是使用字符串。储存数据。转换计算。可到后来,字符串的末尾总会有一个*换了好几个编辑都是这样。关于字符串输出的有关问题
------解决思路----------------------
第一次 i=(*(a+x)-'0')+(*(b+y)-'0')+n;时,
*(a+x)和*(b+y)都是0('\0'),  i是-负数