#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define MAX 15 // 문자열 최대 길이 

// 문자열 글자 '0' 으로 초기화
void strin(char arg[MAX]) {
	int a;

	for (a = 0; a < MAX; a++) {
		arg[a] = '0';		// 문자열 글자 '0'으로 초기화
	}
}

// 입력된 좌측정렬 문자열을 우측정렬 문자열로 변환
void strmvstr(char arg[MAX], int len) {
	int a;
	char temp[MAX] = { 0, };

	strin(temp);		// temp 문자열 글자 '0'으로 초기화
	
	for (a = 0; a < len; a++) {
		temp[(MAX-len)+a] = arg[a];	// 좌측정렬
	}
	
	for (a = 0; a < MAX; a++) {
		arg[a] = temp[a];
	}
}

int main(void) {
	int a = 0;
	char up[MAX] = { 0, };
	char down[MAX] = { 0, };
	char result[MAX] = { 0, };
	
	strin(up);
	strin(down);

	printf(" Input UP : ");
	scanf("%s", up);
	
	printf(" Input DN : ");
	scanf("%s", down);

	printf("\\n  ");
	strmvstr(up, strlen(up)); // 입력된 좌측정렬 문자열을 우측정렬 문자열로 변환
	for (a = 0; a < MAX; a++) printf(" %c", up[a] );

	printf("\\n+ ");
	strmvstr(down, strlen(down)); // 입력된 좌측정렬 문자열을 우측정렬 문자열로 변환
	for (a = 0; a < MAX; a++) printf(" %c", down[a] );

	printf("\\n--------------------------------\\n");

	for (a = MAX - 1; a > 0; a--) {
		result[a - 1] = ( result[a] + (up[a] - '0' ) + ( down[a] - '0') ) / 10;	// 올림수(Carry) 계산
		result[a] = ( result[a] + (up[a] - '0' ) + ( down[a] - '0') ) % 10;
	}

	printf("= ");
	for (a = 0; a < MAX; a++) printf(" %d", result[a]);		// 덧셈 결과 확인
}

<aside> ➡️ Input UP : 123 Input DN : 999

 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3

= 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2

</aside>