Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
АТерентьев
23 / 22 / 16
Регистрация: 16.10.2009
Сообщений: 984
1

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

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

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

Центрировать текст вертикально
Как поместить "Меню" в центр фиолетового блока? А так же убрать отступы у фиолетового блока сверху...

Не могу понять как исправить ошибку Warning: printf() [function.printf]: Too few arguments in Z:\home\ksards.ru\www\id\1.php on line 76
Помогите связать бд с сайтом я новичок в этом вот код php <?php do { printf("<div...

Printf не выводит текст
#include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int...

Как центрировать ссылку?
Почему не применяется text-align: center к ссылке. Или каким еще способом можно выровнять ссылку по...

Как центрировать блок?
вот такой вот банальный вопрос. думаю центрировать див, путем position:absolute, как это делаю я -...

2
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
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;
}
а можно немного доделать, и будет длинные строки разбивать и хвосты центрировать...
1
АТерентьев
23 / 22 / 16
Регистрация: 16.10.2009
Сообщений: 984
26.11.2009, 09:22  [ТС] 3
Спасибо огромное. У меня было такое предположение, но не был уверен, что есть в формате что-то аналогичное выравниванию по левому краю с помощью "-". Если определена длина поля, например , %30s, то приведенный алгоритм мог быть реализован в системе. Я, например, столкнулся с тем, что во многих местах приводится алгоритм вычисления номера дня недели dayOfWeek, а ведь он есть в системе при преобразовании календарного времени в разделенное - он присутствует в структуре struct tm*.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2009, 09:22

Как центрировать слайд-шоу?
Несколько часов провозился, никак не получается настроить вывод слайд-шоу по центру. 1. Модуль...

Как центрировать заголовок в grid?
vs 2005. Не могу найти как центрировать название заголовка столбца в grid?

Как центрировать дочерную форму
Как центрировать дочерную форму внутри MDI-формы? Свойство StartUpPosition для дочерной формы не...


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

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

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