20240312 백준 C언어 공부
11718번 그대로 출력하기
1. 문제
입력 받은 대로 출력하는 프로그램을 작성하시오.
2. 입력
입력이 주어진다.
입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다.
각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다.
또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
3. 출력
입력받은 그대로 출력한다.
>>>코드0. 실패. 입력 초과
#include <stdio.h>
int main(void){
char c[101];
while (scanf("%[^\n]s", c) != EOF){
printf("%s\n", c);
}
return 0;
}
scanf 함수를 사용할 때 %[^\n]s 형식으로 문자열을 입력받는데,
이때 개행 문자가 나올 때까지의 모든 문자를 입력 받는다.
이는 입력 버퍼를 완전히 비워버리므로,
다음에 호출되는 scanf 함수가 개행 문자를 만나도 입력을 받지 않게 된다.
예를 들어, 입력으로 "Hello World\n"가 주어졌을 때,
이 코드는 "Hello World"를 출력하고 개행 문자를 읽지 않는다.
그래서 다음 호출되는 scanf 함수가 개행 문자를 입력으로 받아들이게 된다.
>>>코드1. 문자열로 입력받기
#include <stdio.h>
int main(void){
char c[101];
while (scanf("%[^\n]s", c) != EOF){
printf("%s\n", c);
getchar(); //getchar()로 버퍼에 남은 개행문자를 없애버린다
}
return 0;
}
>>>코드2. 문자로 입력받기
#include <stdio.h>
int main(void){
char c;
while (scanf("%c", &c) != EOF){
printf("%c", c);
}
return 0;
}
>>>코드 설명
scanf()는 ' '(space), '\t'(tab), '\n'(enter)를 모두 구분자로 사용한다.
따라서 공백을 포함한 줄 전체를 입출력하기 위해선 getchar() 또는 fgets()가 필요하다.
>>>문제링크
https://www.acmicpc.net/problem/11718
'백준 > 백준 C언어' 카테고리의 다른 글
백준 C99 10988번 팰린드롬인지 확인하기 (Today I Learn 2024.03.14) (0) | 2024.05.08 |
---|---|
백준 C99 5800번 성적 통계 (Today I Learn 2024.03.13) (0) | 2024.05.08 |
백준 C99 5622번 다이얼 (Today I Learn 2024.03.11) (0) | 2024.05.08 |
백준 C99 2908번 상수 (Today I Learn 2024.03.10) (0) | 2024.05.08 |
백준 C99 1152번 단어의 개수 (Today I Learn 2024.03.09) (0) | 2024.05.08 |