입력(Input)
Input Stream
키보드에서 읽기
- C: scanf()
char firstnName[20];
scanf("%s",firstName);
- C++: cin
char firstName[20];
cin >> firstName;
왜 scanf()는 위험한가?
- char 배열에 "POPE"를 넣어 보자
char firstName[5];
scanf("%s", firstName);
→ scanf()는 경계검사를 하지 않는다!
char firstName[4];
cin >> firstName;
- char[] == char*
- cin은 char배열의 길이를 모름
- 메모리 할당 이슈 = 다른문제는 아님
C에서는 이렇게 한다
char line[512];
char temp[512];
char firstName[4];
if(fgets(line, 512, stdin) != NULL)
{
if(sscanf(line,"%s",temp) == 1 && strlen(temp) < 4)
{
strcpy(firstName, temp);
}
}
C++에서 쓸 수 있는 더 안전한 방법: setw()
char firstName[4];
cin >> setw(4) >> firstName;
0 | 1 | 2 | 3 |
P | O | P | \0 |
#include<iomanip>
※ 해당 게시글은 개인 학습의 목적으로, 아래 강의를 수강한 후 정리한 학습노트입니다.
'C++ 프로그래밍 > Unmanaged Programming' 카테고리의 다른 글
[Unmanaged Programming] 출력(Output) (0) | 2024.05.16 |
---|