% s будет сканировать до следующего пробела, вы не можете сканировать несколько слов без определенной маски.
Вы можете использовать маску "[^ \ n]", эта маска будет сканировать все, пока не появится \ n
#include <stdio.h>
#include <string.h>
int main(void){
char string[50];
int i, frequency = 0;
printf("Enter a string: ");
scanf("%[^\n]", string);
for(i=0;i<strlen(string);i++)
{
printf("%c,", string[i]);
if(string[i] == ' ') {
frequency++;
}
}
printf("Frequency of %d", frequency);
return 0;
}
Проблема в том, что с этой маской вам нужно будет выяснить, как остановить цикл, я попробовал использовать онлайн-компилятор и у меня были некоторые проблемы с использованием строки [i]! = '\ N'
Редактировать: обновлено с использованием strlen, и у меня все работает нормально
printf("%c,", string[i]);
для причины отладки.
Проверьте это, чтобы узнать больше о масках
http://personal.ee.surrey.ac.uk/Personal/R.Bowden/C/scanf.html