コード:
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
fp=fopen("input.txt","r");
char input1[1001]={0},input2[1001]={0};
int output[1002]={0};
int lengs1=0,lengs2=0,lengs3=0,lengs4=0;
int i,j=1,k;
fscanf(fp,"%s",input1);
fscanf(fp,"%s",input2);
while(input1[0]!='0' && input2[0]!='0')
{
lengs1=strlen(input1);
lengs2=strlen(input2);
lengs3=(lengs1>=lengs2)?lengs1+1:lengs2+1;
lengs4=lengs3;
while(lengs3>=0 && lengs1>=0 && lengs2>=0)
{
output[lengs3]+=(input1[lengs1--]-'0')+(input2[lengs2--]-'0');
if(output[lengs3]>=10)
{
output[lengs3]%=10;
output[lengs3-1]+=1;
}
lengs3--;
}
if(lengs1>=0||lengs2>=0)
{
while(lengs1>=0)
{
output[lengs3]+=(input1[lengs1--]-'0');
if(output[lengs3]>=10)
{
output[lengs3]%=10;
output[lengs3-1]+=1;
}
lengs3--;
}
while(lengs2>=0)
{
output[lengs3]+=(input2[lengs2--]-'0');
if(output[lengs3]>=10)
{
output[lengs3]%=10;
output[lengs3-1]+=1;
}
lengs3--;
}
}
if(output[0]!=0)
j=0;
for(i=j;i<lengs4;i++)
{
printf("%d",output[i]);
}
printf("\n");
for(k=0;k<1000;k++)
{
input1[k]=0;
input2[k]=0;
output[k]=0;
}
j=1;
fscanf(fp,"%s",input1);
fscanf(fp,"%s",input2);
}
fclose(fp);
}
input2が残ってる時の処理の部分が間違っていたのと、各配列の大きさを変更、修正しました。
AよりBが短い時の確認を忘れていたようです。
まだまだ勉強が足りませんね。