Выровнять строку на экране по ширине
Есть не рабочий код, прошу помочь.
#include <string.h>
#include <windows.h>
void main()
{
char str[200], str1[70];
char *start, *p;
char raz[] = " .,?!;:-";
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Введите текст:n");
gets_s(str);
int i , z, j, k, a=0, kp;
while (strlen(str) > 59)//пока длина строки больше 59
{
i = 59;
kp = 0;//количество пробелов
str1 == " ";//очищение строки
while (strchr(raz, str[i]) == NULL);//пока не найдем разделитель
{
i--;//двигаемся к началу
}
strncpy(str1, str, i);//копируем 59 символов в новую строку
str1[i+1] = '';//заканчиваем новую строку
strcpy(str, str + (i + 1));//копируем хвост в начало старой строки
while (strlen(str1) < 60)//работаем с новой строкой
{
start = str1;//начало строки
z = 2;
while (str1[a] != '')//пока не достигнем конца строки
{
if (str1[a] != ' ')
a++;//увеличиваем количество пробелов
else
kp++;
p = strchr(start, ' ');//первый пробел от начала строки
if (p == NULL)//если пробела нет
{
start = str1;//начинаем заново и увеличиваем z
z++;//количество пробелов между словами
}
j = p - str1;//позиция пробела
for (k = strlen(str1); k > j; k--)//сдвиг
str1[k] = str1[k - 1];//сдвигаем символ на предыдущий
kp--;//уменьшаем количество пробелов
if (kp == 0)//если пробелы закончились
break;//прерываем цикл
else//если пробелы не закончились
start = p + z;//начинаем с последнего пробела в начале строки
}
printf("Ровный текст:n");
puts(str1);
}
}
system("pause");
}
Есть какая-то вбиваемая строка из 60+ символов. И пока строка будет больше 59 символов, нужно найти первый знак препинания или пробела начиная с 59 символа и копировать эту часть в новую строку. Затем в новой строке необходимо найти количество пробелов между всеми словами и в цикле вставлять туда новые пробелы, сдвигая последний символ строки, пока в новой строке не будет 60 символов.
Допустим вот наша строка:
Необходимо выровнять строку на экране по ширине, равномерно вставляя пробелы между словами, таким образом, чтобы в каждой строке было по символов и строка обязательно заканчивалась знаком препинания или пробелом.
Мы копируем эту часть "Необходимо выровнять строку на экране по ширине, " и в дальнейшем уже работаем с ней, вставляем пробелы между словами, и так в цикле, пока строка не закончится