int getchar(void);
stdin(표준입력)에서 문자를 입력
*getc(stdin) 과 동일
int putchar(int character)
stdout(표준출력)에 문자를 출력
*putc(character, stdout) 과 동일
char* gets(char* buffer)
stdin(표준입력)에서 buffer로 newline('\n')나 파일 끝(EOF)를 만날 때 까지 읽음 (이 때 문자열 끝에 null('\0')이 자동으로 추가됨)
*newline('\n')은 buffer에 포함되지 않는다.
주의할 점으로 fgets(buffer, num, stdin)에는 gets와 달리 newline도 포함되어 저장된다.
반환값은 인자로 전달받은 메모리의 주소, 에러 발생시 NULL
char buf[10];
char ch;
gets_s(buf, sizeof(buf));
printf("gets_s str is %s\n", buf);
ch = getchar();
printf("left char is %c\n", ch);
fgets(buf, sizeof(buf), stdin);
printf("fgets str is %s\n", buf);
ch = getchar();
printf("left char is %c\n", ch);
입력: 777'\n'777'\n'777'\n'
출력: 777
gets_s str is 777
left char is 7
fgets str is 77
left char is 7
int puts(const char* string)
stdout(표준출력)으로 string이 가리키는 주소부터 null('\0')에 도달할 때 까지 복사
(이 때 stdout에 string을 쓴 뒤 자동으로 newline('\n')도 추가되어 출력)
*마지막 null('\0')는 표준출력에 복사되지 않는다.
주의할 점으로 fputs(string, stdout)는 마지막에 newline('\n')을 추가하지 않는다.
반환값은 정상적이면 음수가 아닌 값, 에러 발생시 EOF
형식입출력
int printf(const char* format, ...)
int scanf(const char* format, ...)
cin >> buf
cout << buf
int a, b, c, d, e;
std::cin >> a;
std::cin >> b;
std::cin >> c;
std::cin >> d;
std::cin >> e;
std::cout << "a: " << a << " b: " << b << " c: " << c << " d: " << d << " e: " << e;
입력: 1 2 3 4 5'\n'
출력: a: 1 b: 2 c: 3 d: 4 e: 5
*whitespace, newline을 만날 때 읽고, 만난 whitespace, newline은 버퍼에서 버린다.
char buf[30];
char ch;
std::cin >> buf;
std::cout << buf << '\n';
std::cin >> ch;
std::cout << ch << '\n';
입력: test string'\n'
출력: test'\n's'\n'
*whitespace, newline을 만날 때 읽고, 만난 whitespace, newline은 버퍼에서 버린다.
class MyInfo {
int x;
int y;
public:
MyInfo(int x = 0, int y = 0) : x(x), y(y) {}
friend istream& operator >> (istream& cin, MyInfo& m);
friend ostream& operator << (ostream& cout, MyInfo& m);
};
istream& operator >> (istream& cin, MyInfo& m) {
cin >> m.x >> m.y;
return cin;
}
ostream& operator << (ostream& cout, MyInfo& m) {
cout << "x value is " << m.x << " and " << "y value is " << m.y << endl;
return cout;
}
int main() {
MyInfo m;
cin >> m;
cout << m;
}
입력: 123 45'\n'
출력: x value is 123 and y value is 45
*클래스 내에 멤버 변수로 작성하거나 클래스 외부에 작성하고 friend로 처리한다.
istream& getline(char buf, streamsize n, char delim = '\n');
n-1개의 문자를 읽어들이거나, 제한자(delim)이 나타날 때 까지 읽는다.
(제한자는 추출되지만 버려진다)
반환값은 this
데이터 추출 후 자동으로 끝에 null('\0')가 붙게된다.
ex) cin.getline(buf, 100);
제한자(delim)의 default 값은 '\n'
제한자(delim)이 나타날 때 까지 읽는다.(제한자는 추출되지만 버려진다)
ex) getline(cin, buf);