LINUX.ORG.RU

у Фридла (Библиотека программиста: регулярные выражения) по-моему, есть пример, который именно это и делает. можешь поискать, если хочешь. мне лень:-)

это можно сделать и без регэкспов. просто бежишь циклом справа налево и через каждые 3 символа вставляешь пробел

friday ★★★
()
Ответ на: комментарий от friday

Пробелы с какой стороны начинать расставлять? 
Если с конца, то регэкспы кажется не помогут. Если с начала - то можно.
Вот на всякий случай - 0$ )) 
(это если с конца надо расставлять, т.е. 12345 == 12 345)

/* 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * 
 * Author:                      Bezhenar Vladimir (v04bvs@gmail.com)
 */

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main( void )
{
        char *str = NULL;
        int str_len = 0;
        int sl;
        char *p;

        printf("Enter number: ");
        getline(&str, &str_len, stdin);
        sl = strlen(str);
        while (sl > 0 && ! isdigit(str[sl-1]))
                str[--sl] = '\0';

        for( p = str; *p; ++p) {
                putchar(*p);
                if (! ((sl - (p - str) + 2) % 3))
                        putchar(' ');
        }
        putchar('\n');

        free(str);
        return 0;
}

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.