본문 바로가기

프로그램/C언어

【C언어】 영문 대소문자를 변환하는 함수 프로그램 예시

영문자로만 이루어진 문자열을 입력받고, 그 문자의 대소문자를 변환해서 출력해주는 프로그램의 예시입니다. 방법 1은 변환해주는 함수를 이용해서 전체 코드를 짰습니다. 방법 2는 함수없이 그대로 쭉 나열해서 만든 코드 예시입니다. 둘다 거의 비슷한 결과물을 출력해줍니다.

(방법 1) 함수 이용

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int func_charr(char charr[100]) {     // 영문 대소문자 변환해주는 함수
        int i;
        for (i = 0; sizeof(charr); i++) {
               if ((charr[i] >= 'a') && (charr[i] <= 'z')) {
                       charr[i] = charr[i] - 'a' + 'A';
               }
               else if ((charr[i] >= 'A') && (charr[i] <= 'Z')) {
                       charr[i] = charr[i] - 'A' + 'a';
               }
               else {
                       break;
               }
        }
        return charr;
}
void main()            // 실제 구현되는 main 함수
{
        char a[100];
        double stopper = 0.0;
        while (1) {            // 무한루프
               printf("문자열 입력 (100자 이내로 입력) :  ");
               scanf("%s", &a);
               stopper++;
               if (stopper >= 10.0) { break; }              // 무한루프를 빠져나가는 곳. (10번 실행)
               printf(">> 변환 결과 : %s \n", func_charr(a));       // 함수 구현
        }
        printf("이상! 프로그램을 종료합니다.\n");
}



(방법2) 함수없이 구현하는 프로그램 예시

#include <stdio.h>
int main() {
        char ch[50];
        int i;
        printf("input :");
        scanf("%s", &ch);
        for (i = 0; i<sizeof(ch); i++) {
               if (ch[i] == NULL) { break; }
               else if (ch[i] >= 'A' && ch[i] <= 'Z') {
                       printf("%c", ch[i] + 32);
               }
               else {
                       printf("%c", ch[i]);
               }
        }
        printf("\n");
        for (i = 0; i<sizeof(ch); i++) {
               if (ch[i] == NULL) { break; }
               else if (ch[i] >= 'a' && ch[i] <= 'z') {
                       printf("%c", ch[i] - 32);
               }
               else {
                       printf("%c", ch[i]);
               }
        }
        return 0;
}


위와 같은 과제를 받고 제출하자마자 포스팅해둡니다. 필요하신 분들은 참고하시면 좋을 것 같습니다. 이상!