ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코테 일기(1) : 5년만에 마주친 C++(strtok)
    프로그래밍/C++ 2020. 4. 3. 15:47
    반응형

    2015년 C++를 만진 후, 5년이 지났다.


    코딩테스트를 준비하기 위해 기초를 다지자고 마음을 먹었고, CodeUp사이트에 들어갔다.


    100제를 먼저 풀어보기로 했고, 첫 문제는 역시나 "Hello world" 였다.


    역시 녹슬지 않았군 하면서 여러 문제를 넘기고 문제를 마주친 순간.


    내 눈 앞에 보이는 광경.







    굉장히 쉬운문제...라고 생각했다.


    하지만 Java와 Kotlin에 익숙해졌던 나에게 떠오르는건 

    String type, Substring 함수.... 등등 자바 밖에 떠오르지 않았다.


    다시 처음부터 마음을 가다듬고 하나하나 라이브러리를 살펴보자 했지만...

    라이브러리 조차 알아볼 수 없는 쌩 초보가 되어있었다.


    하나하나씩 구글링을 시작했다..


    먼저 strtok로는 컴파일 에러가 발생하여 strtok_s로 코딩을 했지만... 코드업에서는 이런 함수를 가지고 있지 않는단다 하하....


    그래서 strtok로 컴파일 에러를 무시하며 코딩을 한 결과 힘들게 성공..(진작에 할껄)



    #define _CRT_SECURE_NO_WARNINGS    // strtok 보안 경고로 인한 컴파일 에러 방지

     

    #include <iostream>

    #include <string.h> //strtok 사용을 위한 헤더

     

    using namespace std;

     

    int main() {

            //int a,b,c;

            char* year;

            char* month;

            char* day;

     

            year = (char *)malloc(sizeof(char) * 10);

            cin >> year;

     

            year=strtok(year, ".");

            month=strtok(NULL,".");

            day=strtok(NULL,".");

           

            int y = atoi(year); //숫자로 출력하기 위함

            int m = atoi(month);

            int d = atoi(day);

     

            printf("%04d.%02d.%02d", y, m, d);

     

            free(year);

    }


    이후 컴파일을 하니 잘 돌아갔다.


    입력은 .(온점)이 포함된 날짜였으며 이를 자릿수에 맞게 0을 채워가는 문제였다.



    내가 고작 이 두 줄 출력을 위해 시간을 이렇게 쏟았던가...


    분발해야겠다..




    #코딩 과정의 문제점


    1. strtok_s를 CodeUp 컴파일러에서는 사용하지 못한다.


    2. string을 int로 바꾸는 atoi


    3. strtok에 들어가는 문자열은 string이 아닌 char*만 가능하다.


    4. char*는 무슨 이유 때문인지 한 줄씩 선언해야 사용가능하다...


    댓글

Designed by Tistory.