Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Выровнять текст на экране на Си


Автор: ramona 30.3.2017, 20:57
Текст записан одной длинной строкой. Выровнять текст на экране по правому краю, так что бы в каждой строке было 60 символов и каждая строка заканчивалась знаком препинания или пробелом. Выравнивание осуществить, вставляя дополнительные пробелы между словами (равномерно по всей строке). Есть такой код, но он удаляет все после первого слова
Код

#include <stdio.h>  
#include <string.h>  
#include <windows.h>  

void main() 
{ 
    char str[200]; 
    char space[10] = { ' ' }; 
    char smb = { ',' }; 
    char symb = { ' ' }; 
    SetConsoleCP(1251);//включить кодировку Win1251 при вводе с консоли  
    SetConsoleOutputCP(1251);//включить кодировку Win1251 при выводе на консоли  
    printf("Введите текст:\n"); 
    gets_s(str); 
    int i = 0,len,ns=0,ks,j,k; 
    len = strlen(str);//длина строки 
        while (str[i] != '\0') 
        { 
            while (str[i] == ' ')//пока встречается пробел перебираем символы  
                i++; 
            ns = i;//начало слова  
            while ((str[i] != ' ') && (str[i] != '\0'))//пока не встретится пробел или конец строки перебираем символы  
            { 
                i++; 
                ks = i - 1;//конец слова 
            } 
            k = ks + 1; 
            while (len != 60) 
            { 
                strcpy(str + k, space); 
                break; 
            } 
        }    
    printf("Ровный текст:\n"); 
    printf("%d\n", len); 
    puts(str); 
    getchar(); getchar(); 
}  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)