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

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

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

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

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

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

Printf не выводит текст - C++
#include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main() { char str; sprintf(str,...

Чем ::printf предпочтительнее printf? - C++
Смотрю на код одного толкового программиста и, как новичек в С++, удивляюсь: какой смысл писать в таком стиле? Это же вроде одно и то же....

Как реализована функция printf - C++
int printf ( const char * format, ... ); http://www.cplusplus.com/reference/clibrary/cstdio/printf/ Смотрю на эту ф-цию и думаю как...

Как записать printf в переменную? - C++
Коротко о проблеме, нашол в сети рабочий код получения серийный номер диска, но вивод через printf, а мне нужно чтоб отдать в return, уже...

как переделать с cout на printf ? - C++
Вычислить суммы элементов каждой строки матрицы x. Определить наименьшее значение этих сумм и номер соответствующей строки. #include...

Как выделить слово в printf? - C++
Всем Доброго времени суток! Я хочу выделить слово в printfe?цветом Вот код ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,601
26.11.2009, 01:18 #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;
}
а можно немного доделать, и будет длинные строки разбивать и хвосты центрировать...
АТерентьев
21 / 20 / 1
Регистрация: 16.10.2009
Сообщений: 947
26.11.2009, 09:22  [ТС] #3
Спасибо огромное. У меня было такое предположение, но не был уверен, что есть в формате что-то аналогичное выравниванию по левому краю с помощью "-". Если определена длина поля, например , %30s, то приведенный алгоритм мог быть реализован в системе. Я, например, столкнулся с тем, что во многих местах приводится алгоритм вычисления номера дня недели dayOfWeek, а ведь он есть в системе при преобразовании календарного времени в разделенное - он присутствует в структуре struct tm*.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2009, 09:22
Привет! Вот еще темы с ответами:

Как в цикле увеличить отступ в Printf - C++
как в цикле с помощью переменной, в нашем случае, цифра &quot;5&quot; (5 пробелов отступ) увеличивалась в цикле? ...

Как строку записать через printf - C++
Здравствуйте! Как строку in &gt;&gt; i &gt;&gt; j; Записать на си через printf ?

Как вывести printf для струкутры - C++
помогите, как вывести printf для струкутры w.sname,w.name и т.д вот мой код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Как в Си перенаправить стандартный вывод printf? - C++
Нужно сделать чтоб функция printf выводила данные на некоторое нестандартное устройство. То есть перенаправление стандартных потоков не...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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