Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
АТерентьев
20 / 19 / 1
Регистрация: 16.10.2009
Сообщений: 947
#1

Как центрировать текст в printf по формату - C++

26.11.2009, 00:36. Просмотров 1970. Ответов 2
Метки нет (Все метки)

К моему удивлению не могу найти каким образом в С вывести текст по центру строки заданного размера. (нужно вывести месяц и год при выводе календаря на месяц, аналогично команде cal в linux).
Заранее благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2009, 00:36     Как центрировать текст в printf по формату
Посмотрите здесь:

как переделать с cout на printf ? C++
Как вывести printf для струкутры C++
Как реализована функция printf C++
как count endl заменить на printf ? C++
C++ Как выделить слово в printf?
Как в Си перенаправить стандартный вывод printf? C++
Чем ::printf предпочтительнее printf? C++
Как в цикле увеличить отступ в Printf C++
Printf не выводит текст C++
Функция printf () как это работает C++
Как записать printf в переменную? C++
Как строку записать через printf C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
26.11.2009, 01:18     Как центрировать текст в printf по формату #2
Если оно только для вывода, вот так можно сделать:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <string.h>
 
/* вывод строки по центру */
 
#define MAX_LEN 80
 
char *middle(char *str){
    static char buf[MAX_LEN + 1];
    size_t spaces_needed, str_len;
    
    str_len = strlen(str);
    if ( str_len >= MAX_LEN )
        return str;
    
    spaces_needed = (MAX_LEN - str_len) / 2;
    memset(buf, ' ', spaces_needed);
    strcat(buf + spaces_needed, str);
    
    return buf;
}
 
int main(void){
    char *str = "Hello, World!";
    
    printf("%s\n", middle(str));
    
    return 0;
}
а можно немного доделать, и будет длинные строки разбивать и хвосты центрировать...
АТерентьев
20 / 19 / 1
Регистрация: 16.10.2009
Сообщений: 947
26.11.2009, 09:22  [ТС]     Как центрировать текст в printf по формату #3
Спасибо огромное. У меня было такое предположение, но не был уверен, что есть в формате что-то аналогичное выравниванию по левому краю с помощью "-". Если определена длина поля, например , %30s, то приведенный алгоритм мог быть реализован в системе. Я, например, столкнулся с тем, что во многих местах приводится алгоритм вычисления номера дня недели dayOfWeek, а ведь он есть в системе при преобразовании календарного времени в разделенное - он присутствует в структуре struct tm*.
Yandex
Объявления
26.11.2009, 09:22     Как центрировать текст в printf по формату
Ответ Создать тему
Опции темы

Текущее время: 09:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru