Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 15:35   #1
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию с++ строки

Как сместить весь массив на 1 элемент вправо, вместе с симвоом '\0'?
Додумался до этого, но он не работает:
Код:
for (j=strlen(text)-1;j >=1;j--)
                    {
                        text[j] = text[j-1];
                    }
cheef вне форума Ответить с цитированием
Старый 16.11.2011, 15:56   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

боюсь что если вместе с символом окончания строки, то вам нужно начинать с j = strlen(text) +1, а не так как у вас.
mMAg вне форума Ответить с цитированием
Старый 16.11.2011, 21:50   #3
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

В общем такая задача:
нужно добавить в слова меньше заданой длины последнюю букву слова:
вот что есть:
Код:
#include<stdio.h> 
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

#define N 256

void submain(char *text)
{    
    int i = 0, j, next = 0,lenght;
    printf("Введите длину строки: ");
    scanf("%d",&lenght);
    do
    {
        if (!isalpha(text[i]))
            {
                if(i - next - 1 < lenght)
                {                    
                    text[i] = text[i - next - 1];
                    for (j=strlen(text)-1;j > i;j--)
                    {
                        text[j] = text[j-1];
                    }
                    text[strlen(text)]='\0';
                }
                next = i;
            }
        i++;
    }
    while(text[i] != '\0');
    puts(text);
}

int main()
{
    char text[N];
    int lenght;
    system("clear");
    printf("Преобразовать исходную строку, приводя все слова к заданной длине следующим образом: если длина слова меньше заданной, ");
    printf("дополнить его последней буквой, а если больше - обрезать. \n");
    printf("Введите строку: ");
    gets(text);
    submain(text);
    return 0;
}
cheef вне форума Ответить с цитированием
Старый 16.11.2011, 21:50   #4
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

Собственно весь текст ломается.
cheef вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10