Combiner 0.001의 소스를 짜면서...
어떻게 프로그램명과 버전정보를 가운데로 정렬할 지 막막했었는데...
문득 문자열의 길이를 int형으로 반환해주는 Strlen() 함수가 생각나서...
Strlen() 함수를 응용해보았는데, 된다 -_-b
아래는 문자열을 가운데 정렬하는 방법의 원리이다
1. 프로그램의 가로폭(width)과 문자열(text)를 #define 으로 정해둔다.
2. Strlen() 으로 text의 길이를 훔쳐온다
(여담이지만 Strlen()이 Steal 의 p.p형인 stolen 으로 보여서 '~의 길이를 구한다' 라는 표현보단 stolen의 원형인 steal. '~의 길이를 훔치다' 라는 표현을 애용한다)
3. 가로폭의 절반에서 text 길이의 절반을 뺀 만큼 공백으로 채운다
4. text를 쓴다.
2. Strlen() 으로 text의 길이를 훔쳐온다
(여담이지만 Strlen()이 Steal 의 p.p형인 stolen 으로 보여서 '~의 길이를 구한다' 라는 표현보단 stolen의 원형인 steal. '~의 길이를 훔치다' 라는 표현을 애용한다)
3. 가로폭의 절반에서 text 길이의 절반을 뺀 만큼 공백으로 채운다
4. text를 쓴다.
아래는 Combiner 에 적용한 소스의 일부이다..
#include <stdafx.h>
#include <string.h> // Strlen() 함수를 쓰려면 반드시 인클루드 해야한다.
// width와 text를 여기서 정해둔다.
#define width "==============================================================="
#define text "Combiner 0.001 Alpha Version"
#define text2 "Prescott (http://prescott.pe.kr)"
int main(void)
{
int i, j;
printf("%s\n", width);
// 가운데정렬
for(i=0 ; i<((strlen(width) / 2) - (strlen(text) / 2)) ; i++) printf(" ");
printf("%s\n\n", text);
// 응용하여 오른쪽 정렬
for(j=0 ; j<(strlen(width) - strlen(text2)) ; j++) printf(" ");
printf("%s\n\n", text2);
printf("%s\n", width);
return 0;
}
#include <string.h> // Strlen() 함수를 쓰려면 반드시 인클루드 해야한다.
// width와 text를 여기서 정해둔다.
#define width "==============================================================="
#define text "Combiner 0.001 Alpha Version"
#define text2 "Prescott (http://prescott.pe.kr)"
int main(void)
{
int i, j;
printf("%s\n", width);
// 가운데정렬
for(i=0 ; i<((strlen(width) / 2) - (strlen(text) / 2)) ; i++) printf(" ");
printf("%s\n\n", text);
// 응용하여 오른쪽 정렬
for(j=0 ; j<(strlen(width) - strlen(text2)) ; j++) printf(" ");
printf("%s\n\n", text2);
printf("%s\n", width);
return 0;
}
실행결과
참~~~~~~~~~~~~~~~~~~~~~~~ 쉽죠잉?
'Programming > Notepad' 카테고리의 다른 글
| C언어에서 printf로 글 쓸때 문자열을 가운데로 정렬하는 방법. (0) | 2009/05/18 |
|---|---|
| 영상처리 관련 도서... (0) | 2009/05/16 |
Comment 0


