Re: Некоректно виводиться результат
scanf("%[^\n]s",st);
вводити все, крім \n, включно із пробілами.
Але ще раз, вам gets потрібен.
Я вже згадав про scanf, і що це функція для зчитування одної лексеми.
Просто я раніше не сильно вникав в різні варіанти IO даних.
Чому тоді з "cin" те саме робиться? Це ж потік даних наскільки я пам'ятаю.