C언어 - 함수가 필요할 때

2020. 11. 10. 17:46개인공부/C언어

프로그램을 작성할땐 2가지를 신경써야한다.

 

1. 일반화라는 관점에서 프로그램이 여러가지의 경우에 대해서 쉽게 작동할수 있도록 개선해나가야 함.

2. 같은 기능이 여러번 나오면 안된다. (유지보수가 어렵기 때문)

 

 

 

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define WIDTH 20
#define NAME "Cho Yi Sak"
#define ADDRESS "Seoul, Korea"


void print_bar(int n_stars) {
	for (int i = 0; i < n_stars; i++)
		printf("*");
	printf("\n");
}


int main() {
	
	print_bar(WIDTH);
	printf("	%s\n", NAME);
	printf("	%s\n", ADDRESS);
	print_bar(WIDTH);

	return 0;
}

 

별막대기 함수를 따로 만들어서 중복하지 않고 함수 호출로 설계.

********************
        Cho Yi Sak
        Seoul, Korea
********************

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define WIDTH 40
#define NAME "Cho Yi Sak"
#define ADDRESS "Seoul, Korea"


void print_multiple_chars(char c, int n_stars)
{
	for (int i = 0; i < n_stars; ++i)
		printf("%c", c);	//putchar(c)
}

void print_centered_str(char str[]) {
	int n_blanks = 0;
	n_blanks = (WIDTH - strlen(str)) / 2;
	print_multiple_chars(' ', n_blanks);
	printf("%s\n", str);
}


int main() {

	print_multiple_chars('*', WIDTH);
	printf("\n");

	print_centered_str(NAME);
	print_centered_str(ADDRESS);
	print_centered_str("I love you");

	print_multiple_chars('*', WIDTH);

	return 0;
}

 

위 코드의 결과

 

유지보수가 한결 더 쉬워졌고 코드의 중복도 많이 줄었다.