본문 바로가기

미래(2015-2016)/자습

문자열을 소문자 혹은 대문자로 바꾸기



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
    2015.08.26 - 2015.08.28
    내용: 문제5. 대문자를 소문자로 바꾸는 프로그램을 작성하세요. 소문자를 대문자로 바꾸는 프로그램을 작성하세요.
          문제5-1. 대문자를 소문자로 바꾸는 사용자 정의함수를 만들어서 출력하는 프로그램을 작성하세요. 
                   소문자를 대문자로 바꾸는 사용자 정의함수를 만들어서 출력하는 프로그램을 작성하세요. 
          문제5-2. 입력받은 문자열에서 대문자->소문자 변환 함수, 소문자->대문자 변환 함수로 만들어서 프로그램을 출력하세요.
*/
 
#include <stdio.h>
#include <string.h>        // strleng(char* str)을 사용하기 위해 필요함.
#include <ctype.h>        // toupper(int c), tolower(int c)를 사용하기 위해 필요함.
 
void prtupper(int upper)    // 소문자를 대문자로 만들어 출력하는 사용자 정의함수
{    
    printf("%c \n", toupper(upper));    // toupper(int c): 소문자를 대문자로 만드는 함수 
}
 
void prtlower(int lower)    // 소문자를 대문자로 만들어 출력하는 사용자 정의함수
{
    printf("%c \n", tolower(lower));    // tolower(int c): 대문자를 소문자로 만드는 함수
}
 
void scprlower()        // 입력받은 대문자 문자열을 소문자 문자열로 만들어 출력하는 사용자 정의함수.
{
    char str[100];            // 문자열을 입력받을 배열을 생성
    unsigned int i = 0;        // 관계 연산자에서 sing/unsinged mismatch warning을 없애기 위해 unsinged 사용.
                            // warning C4018: '<' : signed/unsigned mismatch
    while (i < strlen(str))    // 문자열이 모두 대문자로 바뀌어 출력되기 전까지 계속 입력값을 받음
    {
        printf("문자열을 입력해주세요. \n");
//        scanf("%s", &str);
        gets(str);
 
        for (i = 0; i < strlen(str); i++)
        {
            if (isupper(str[i]) == 0 && str[i] != ' ')
            {
                printf("대문자만 입력가능합니다.");
                fflush(stdin);    // 표준입력영역(standard input)의 버퍼를 모두 비어냄.
                break;            // scanf로 입력받을 시 버퍼가 남아있어 입력을 받지 않는 것을 방지하기 위함.
            }
            else
            {
                str[i] = tolower(str[i]);
                if (i == strlen(str) - 1)        
                    printf("%s \n", str);                    
            }
        }
    }
}
 
void scprupper()    // 입력받은 소문자 문자열을 대문자 문자열로 만들어 출력하는 사용자 정의함수.
{
    char str[100];
    unsigned int i = 0;
 
    while (i < strlen(str))
    {
        printf("문자열을 입력해주세요. \n");
//        scanf("%s", &str);
        gets(str);
 
        for (i = 0; i < strlen(str); i++)
        {
            if (islower(str[i]) == 0 && str[i] != ' ')
            {
                printf("소문자만 입력가능합니다.");
                fflush(stdin);
                break;
            }
            else
            {
                str[i] = toupper(str[i]);
                if (i == strlen(str) - 1)
                    printf("%s \n", str);
            }
        }
    }
}
 
int main()
{
    char upper = 'A';
    char lower = 'a';
 
    printf("대문자->소문자: %c -> %c \n", upper, tolower(upper));
    printf("소문자->대문자: %c -> %c \n", lower, toupper(lower));
    printf("===============================================\n");
 
    prtupper(upper);
    prtlower(lower);
    printf("===============================================\n");
 
//    scprupper();
    scprlower();
    
 
    return 0;
}
 
/* void scprupper()        // 입력받은 소문자를 대문자로 만들어 출력하는 사용자 정의함수
{
    char alphabet;
    printf("문자를 입력해주세요. \n");
    while (1)            // 무한반복으로 변환하기 전까지 계속 값을 받음.
    {
        scanf("%c", &alphabet);
        if (islower(alphabet) != 0)
        {
            prtupper(alphabet);
            break;
        }
        else
        {
            printf("소문자를 입력해주세요 \n");
            fflush(stdin);    // 표준입력영역(standard input)의 버퍼를 모두 비어냄.
                            // scanf로 입력받을 시 버퍼가 남아있어 입력을 받지 않는 것을 방지하기 위함.
        }
    }
}
*/
cs


upperLower.c


'미래(2015-2016) > 자습' 카테고리의 다른 글

연산자를 입력받아 계산하기  (0) 2015.08.28
알람 울리는 시간 맞추기 (알람시계)  (0) 2015.08.28
마름모 찍기  (0) 2015.08.26
직구 금액 계산하기  (0) 2015.08.26
임의의 수 중 최대값 찾기  (0) 2015.08.25