영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
scanf("%[^\n]s", str);
scanf 사용 시 [^\n] 추가 :
공백을 포함해서, Enter값이 들어오기 전까지 입력을 받겠다
응용
scanf("%[abc]", str);:a나 b나 c 문자 "이외의 값"이 나오기 전까지 입력을 받겠다.
#include<stdio.h>
#include<string.h>
int main(){
char str[1000000];
scanf("%[^\n]s", str);
int count = 0;
int i = 0;
int num;
num = strlen(str);
while(str[i]){
if (str[i] == ' '){
count = count + 1;
}
i++;
}
if(str[0] == ' ')
count = count - 1;
if (str[num -1] == ' ')
count = count - 1;
printf("%d", count+1);
return 0;
}