C언어 문자열배열

2018. 9. 29. 21:38개발노트

문자열배열을 사용해서 소문자로 입력된 문자열을 대문자로 변경하고 출력하고

배열을 역순으로 출력하는 프로그램을 만들어봤습니다.


문자열배열을 만들어줍시다.

넉넉하게 

char str[100]; 


문자열 입력에는

gets 함수를 사용합니다.

저번에 ROT13에서도 사용했듯이 한글자씩 입력받기 위함입니다.

1
    gets_s(str);
cs


이렇게 문자열배열을 만들어주고

소문자를 대문자로 만들기위해 if문을 만들어줍시다.


1
2
3
4
5
6
7
8
9
if (str[i] >= 'a' && str[i] <= 'z')
        {
 
            printf("%c", str[i] - 32);
        }
        else
        {
            printf(" ");
        }
cs


소문자면 입력된 문자열에서 -32를 해줍니다.

대소문자 사이가 32만큼 차이가 나서 그런겁니다.

대문자를 소문자로 바꾸려면 +32를 해주면 되겠네요.


역순은 어떻게 구할까요?


for문을 돌며 str 배열의 끝부터 하나씩 출력합니다.


1
2
3
4
for (i = strlen(str) - 1; i >= 0; i--)
    {
        printf("%c", str[i]);
    }
cs


strlen() 함수를 쓰기 위해서는 

#include <string.h> 를 사용해서 헤더를 불러와야합니다.


전체코드



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
#include <stdio.h>
#include <string.h>
int main() {
 
    char str[100];
    int i;
    printf("문자열을 입력하세요 : ");
    gets_s(str);
    printf("\n");
 
    printf("변경 후 문자열 : ");
    for (i = 0; i < 100; i++) {
        if (str[i] >= 'a' && str[i] <= 'z')
        {
 
            printf("%c", str[i] - 32);
        }
        else
        {
            printf(" ");
        }
    }
 
    printf("\n");
    printf("역순 : ");
    for (i = strlen(str) - 1; i >= 0; i--)
    {
        printf("%c", str[i]);
    }
 
}
cs