언어/C

string 대소문자 변경

하나의묵 2021. 5. 17. 19:09

약소한 잡담

'블로그에 내가 학습한 내용을 적으면서 누군가에게 도움이 되었으면 좋겠다' 라고 생각하면서 

블로그를 만들었지만 대학교 3학년 후반부터 시간이 없다는 핑계로 한동안 잠들어 있던 나의 블로그

우연한 기회로 한 회사에 입사하게 되었고, 졸업예정자 이기때문에 입사 전에 교육을 받게되었다.

이번 글 부터는 교육을 받으면서 작성했던 코드들에 대하여 리뷰하는 글을 작성하고자한다..

 

교육을 같이 듣는 분들은 어느정도 프로그래밍 언어에 대해 지식이 있어서 기본적인 앞쪽 문법은 

넘어가게 되었고 C언어의 string부터 코드를 다시한번 학습하게 되었다.

 

 

0430_String.c 

 

먼저 문자열의 대소문자를 구분하여 전환하는 코드를 작성했다.

char str[] = "I am a Boy";

int count = strlen(str);


for (int i = 0; i < count; i++)
{
      char t = str[i];
      int test = t;
   if (97 <= test && test <= 122)
   {
         t -= 32;
         str[i] = t;
    }
   else if (65 <= test && test <= 90)
   {
        t += 32;
        str[i] = t;

   }
 }
printf("%s", str);

 

char str[] = "I am a Boy";

먼저 char형 변수배열 str을 선언하여 I am a Boy로 초기화를 하였다.

str의 모든 요소를 대소문자 구분 하기위해서는 str의 길이를 구하여 for문을 이용해 한바퀴

사이클을 돌아야 한다. 

 

따라서 기본라이브러리 함수인 strlen()을 사용하여 str의 길이를 구했다. 

strlen()함수는 매개변수로 길이를 알고싶은 문자열을 넣어주면 된다.

 

* 여기서 주의할 점은 strlen()는 문자열의 널값을 제외한 요소들의 길이를 보내주기때문에 주의해서 사용해야한다.

 

for문을 해당 문자열의 길이만큼돌면서 

str[i] str의 i번째 요소를 char t에 저장하고 t를 숫자로 비교하기 위해 int 형인 test에 넣어주었다.

* C언어에서 문자는 아스키코드를 사용하고 있기 때문에 int형으로 변환해주면 아스키코드표에 따라 값을 변환한다.

 

if문에서 test를 이용해 

(97 <= test && test <= 122) 즉 test가 소문자일 때 (아스키코드표에서 97~122 까지는 소문자이다.)

t 에 -32를 해주어 대문자로 변환하고, 그값을 char를 받아온 현재 str의 위치에 넣어주면 대소문자 전환이 된다.

 

 else if (65 <= test && test <= 90)도 마찬가지의 원리이다. 

 

모든 for문을 돌게되면 str의 대소문자 전환이 완성되고,

이를 확인하기 위해 printf("%s", str); 를 사용하였다.

 

 

마침 글

오늘 처음으로 작성한 소스코드들을 찾아 글을 쓰기 시작했는데 블로그 글작성에서는 화이트스페이스가 사라지는 것을

알게되었다.. 방법을 찾아봐야겠다.

내가 머리속으로 알고있는 것을 이렇게 누군가에게 전달하려고 글로 쓰는것이 이렇게 어려운 것인줄 몰랐다.

간단한 코드지만 생각보다 길게 설명이 필요했다. 하지만 설명을 하면 머리속에서 되돌아 볼 수 있어 

학습에도 좋은 방법인 것 같다.

 

 

 

모든 소스코드는 저의 깃허브 https://github.com/hanamuk 에서 공유 하도록 하겠습니다.

교육에서 작성한 코드는 Bit_MasterClass 저장소에 있습니다.

'언어 > C' 카테고리의 다른 글

string cat, string lenth 구현..  (0) 2021.05.17
string reverse, 공백제거  (0) 2021.05.17
C언어  (0) 2020.03.11