<문제>
영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오.
<정답 코드>
그냥 띄어쓰기 개수로 하면 되는 거 아닌가 했다가 한참 걸린 문제..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> #include <cstdio> using namespace std; int main(void) { int ret = 0; int num = 0; char str[1000000] = {0, }; /* 입력을 EOF까지만 받도록 함 scanf에 아무 입력도 없을 경우 -1을 리턴한다*/ while(1) { ret = scanf("%s", str); if(ret == EOF) break; num++; } printf("%d", num); } | cs |
<번외>
1 2 3 4 5 6 7 8 9 | while(1) { ret = scanf("%s", str); printf("%d\n", ret); if(ret == EOF) break; num++; printf("====\n"); printf("%s\n", str); } | cs |
while문을 이런식으로 바꿔서 보면 scanf가 어떤식으로 작동하는지 알 수 있다.
Ctrl + c를 누르는 순간 -1이 출력되면서 끝남.
'C++ 문제풀이' 카테고리의 다른 글
1697번 백준(Baekjoon) (0) | 2018.09.24 |
---|---|
1929번 백준(Baekjoon) (0) | 2018.09.07 |
1157번 백준(Baekjoon) (0) | 2018.09.06 |
8958번 백준(Baekjoon) (0) | 2018.09.05 |
1260번 백준(Baekjoon) (0) | 2018.08.30 |