https://www.acmicpc.net/problem/1152
백준 1152번 문제를 풀면서 문자열에 관해 더 많은 것을 알았다.
입력을 받을 때 사용되는 scanf 함수는 공백을 문자열 끝으로 인식하여 공백이 있는 문자를 입력 받을 때는 사용이 불가하다.
그렇다면 공백이 있는 문자열은 어떤 함수를 받아야 할까?
공백이 있는 문자열을 받는 방법은 크게 두 가지가 있다.
1. scanf("%[^\n]", str)
scanf에서 [^문자]는 해당 문자가 나오기 전까지 모든 문자열을 받겠다는 뜻이다.
2. char * fgets(char * str, int num, FILE * pFile)
함수 이름인 fgets는 file + get + string을 합친 이름으로, 파일로부터 문자열을 가지고 온다는 뜻이다. 단, fgets 함수는 scanf와 달리 공백을 포함하여 문자열을 입력 받는다.
코드 #1
#include <stdio.h>
int main(void) {
char array[1000001];
int cnt = 0;
scanf("%[^\n]", array);
if(array[0] != ' ') {
cnt++;
}
int i = 0;
while(array[i]) {
if(array[i] == ' ') {
cnt++;
}
i++;
}
if(array[i-1] == ' '){
cnt--;
}
printf("%d", cnt);
}