Использование функции scanf
в формате "%s"
пропускает начальные пробелы и считывает символы, пока не встретятся пробелы.
Таким образом, вы не можете ввести предложение, используя этот формат,
Вместо этого используйте стандартную функцию fgets
.
Кроме того, учтите, что пользователь может разделять слова несколькими пробелами или табуляциями. В этом случае ваш вывод будет недействительным, потому что будет много пустых строк.
Более эффективно использовать стандартные C функции strspn
и strcspn
.
Здесь демонстрационная программа.
#include <stdio.h>
#include <string.h>
int main(void)
{
enum { N = 100 };
char str[N] = "";
printf( "Enter a Sentence: " );
fgets( str, N, stdin );
str[ strcspn( str, "\n" ) ] = '\0';
const char *p = str;
const char *delim = " \t";
while ( *p )
{
p += strspn( p, delim );
const char *q = p;
p += strcspn( p, delim );
if ( p != q )
{
printf( "%*.*s\n", ( int )( p - q ), ( int )( p - q ), q );
}
}
return 0;
}
Если, например, ввести следующий оператор
Have a nice day Luka Milicevic
, то вывод программы будет
Enter a Sentence: Have a nice day Luka Milicevic
Have
a
nice
day
Luka
Milicevic