개행문자 제거와 getline를 위해 fflush(stdin); 을 처음에 썼었더니 입력버퍼를 제거하면 크나큰 문제가 생길 수 있다하여 알고스팟에서 막아놨다.

그래서 그 대안으로 fgets와 cin.ignore(); 을 사용함 - 궁금한건 ignore도 마찬가지로 버퍼 지우는 것 같은데 왜 얜 괜찮은 것인가.

sizeof();는 각 변수의 자료형의 사이즈를 알려준다.

배열이면 배열의 크기를 알려주지만, 포인터일 경우 포인터가 가질 수 있는 크기인 4를 알려준다(포인터는 주소를 저장하므로 4byte)

char* -> string은 그냥 대입하면 된다. 쉽다.


fgets의 개행문자 제거를 다시 생각해봐야할 듯. 현재 string은 pop_back함수를 통해 맨 끝 문자를 삭제할 수 있었지만 다른 변수는 글쎄?

gets보단 fgets를 쓰자! - 버퍼 오버플로 방지

포인터명에 *를 붙여서 출력하면 한글자씩 나온다. 주소값을 전달해줘서 그런것 같다. char형이면 +1, int형이면 +4

string -> int는 atoi / string -> double은 atof 사용 - 헤더 잊지말 것

char형 숫자를 int로 바꾸고 싶으면 '0'을 빼면 된다.


fflush(stdin) 사용하면 안되는 이유

fflush의 입력 파일에 대한 동작은 표준에서 정의되지 않은 것일 뿐더러, 설령 기대대로 버퍼를 비우는 동 작을 한다고 하면 채점용 테스트 데이터 파일에서 일정 단위로 읽어 채운 버퍼를 비워 버리게 되며, 이 경우 프로그램이 어떻게 동작할지는 전혀 알 수 없게 됩니다. 따라서 절대 사용해서는 안 되며, 행 끝의 줄 바꿈 문자 등이 문제가 되는 경우 다른 방법으로 잘 처리해야 합니다. 


++그러고보니까 데이터 해제 안함;;

'알고스팟 > 튜토리얼' 카테고리의 다른 글

[소스코드/C++] HOTSUMMER  (0) 2016.03.01
[소스코드/C++] CONVERT  (0) 2016.03.01
[소스코드/C++] ENCRYPT  (0) 2016.02.29
[소스코드/C++] LECTURE  (0) 2016.02.29
[소스코드/C++] ENDIANS  (0) 2016.02.29

+ Recent posts