-
코테 일기(2) : 계속된 입출력의 괴롭힘(strtok)프로그래밍/C++ 2020. 4. 4. 22:56반응형
5년만에 C++에 손을 얹은 내가 저번시간에 strtok 한테 혹독한테 당했다.
하지만 나는 나를 더 고생시키기 위해 비슷한 문제를 또 들고왔다.
처음 든 생각 : 그때랑 똑같이 Delimiter를 '-'로 두어서 끊으면 쉽게 처리할 수 있겠다.
그리고 이번엔 exception 처리를 해서 14자리를 넘어가면 오류를 출력하게 해보았다.
#define _CRT_SECURE_NO_WARNINGS // strtok 보안 경고로 인한 컴파일 에러 방지
#include <iostream>
#include <string.h> //strtok 사용을 위한 헤더
#include <stdexcept>
using namespace std;
int main() {
char* identity;
char* identity_2;
identity = (char *)malloc(sizeof(char) * 15);
try {
cin >> identity; //14자리의 주민등록번호 입력받기
}
catch (exception& e) {
cout << "배열의 범위를 14자리 이하로 맞춰주세요" << e.what() << endl;
}
identity = strtok(identity, "-");
identity_2 = strtok(NULL, "");
cout << identity << identity_2 << endl;
free(identity);
}
결과는 성공적으로 출력했지만 예외처리가 성공적으로 되지 않았다...
딱보니 heap에 할당했었던 size를 초과해서 선언을 하였거나 입력했다는 뜻인데...
알긴 아는데 왜 exception처리가 안되는 거야...
구글링을 통해 찾아봤지만 try catch로 처리하는 방법은 나와있지 않고 그냥 동적 할당 크기를 더 늘려라는 말 밖에 없다...
혹시라도 해결방법을 아시는 분은 알려주세요 ㅠㅠ
'프로그래밍 > C++' 카테고리의 다른 글
코테 일기(6) : 백준 [1260번] DFS와 BFS(BFS편) (0) 2020.04.05 코테 일기(5) : CodeUp [1093] 이상한 출석 번호 부르기1 (0) 2020.04.05 코테 일기(4) : CodeUp [1090] 수 나열하기2 (0) 2020.04.05 코테 일기(3) : 원하는 문자가 입력될 때까지 반복 출력하기 (7) 2020.04.04 코테 일기(1) : 5년만에 마주친 C++(strtok) (0) 2020.04.03