#include <stdio.h>
#include <string.h>
char *fun(char * s1,char *s2,char *r)
{
int len,cy=0,md;
char *p,*q,*t;
len=strlen(s1);
p=s1+len-1;
q=s2+len-1;
t=r+len;
/**********************found***********************/
*t='\0';
while(p>=s1)
{
/**********************found***********************/
md=*p+*q-'0'+cy;
if(md>=10) cy=1;
else cy=0;
*t=md%10+'0';
p--;
q--;
t--;
}
/**********************found***********************/
if(cy=1)
*t='1';
else
{
while(*r++=*++t);
}
return t;
}
void main()
{
char s1[100],s2[100],s3[101];
strcpy(s1,"65743");
strcpy(s2,"85339");
fun(s1,s2,s3);
printf("%s+%s=%s\n",s1,s2,s3);
}
二级改错题,不理解这里加减'\0'具体是干嘛
设置 r 字符串结束的位置
【以下回答由 GPT 生成】
这段代码是实现两个大整数的加法运算。在这里,'\0'
的作用是给结果字符串r
赋值结束符,即将字符串的末尾设置为\0
,表示字符串的结束。这样做是为了方便后续的字符串处理。
在程序中,变量t
用于指向结果字符串r
的末尾,然后通过循环逐位相加,并将结果保存到t
所指向的位置,然后再将t
指针向前移动一位。当循环结束后,如果进位cy
为1,说明最高位有进位,需要在结果字符串最前面添加一个字符'1'
,表示进位。如果进位cy
为0,则将结果字符串后面剩余的部分复制到新的字符串r
,并返回该字符串。
因此,在这段代码中,*t='\0'
的作用是将字符串结果的末尾设置为\0
,表示字符串结束。
【相关推荐】