Добрый день, появился такой вопрос. Реализую сложение столбиком в С, код следующий:
Код |
char* Addition (char *first, char *second,char str[]){ int f,s,max,i,rem,prom,x1,x2; f=s=i=rem=max=0; x1=x2=1; while(*first!='\0'){ first++; f++; } first--; //move pointer to the last charatcetr of the string while(*second!='\0'){ second++; s++; } second--; //move pointer to the last caharcter of the string if(f>s)max=f; else max=s; char buffer[max+1];//buffer storage for result for(i=0;i<max;i++){ //addition if (i==f)x1=0; if (i==s)x2=0; prom = x1*(*first-'0')+x2*(*second-'0')+rem; if (prom >= 10){ rem=1; prom-=10; }else rem=0; if(x1!=0)first--; if(x2!=0)second--; buffer[max-i]=prom+'0'; } buffer[max+1]='\0';
if(rem==1){ str[0]='1'; strcat(str,buffer); }else strcpy(str,buffer); return str; }
int main(int argc, char *argv[]){ char str[]=""; printf("%s\n",Addition(argv[1],argv[3],str)); return 0; }
|
в результате получаю лишние символы, например, если аргументы 999 и 1, то между 1 и 000 лишние символы, не подскажете что я упускаю? Спасибо |