Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
1

Скопировать текст между символов

28.01.2015, 19:59. Просмотров 1459. Ответов 6
Метки нет (Все метки)


Ребят , помогите написать функцию , пожалуйста. Надо копировать текст в переменную , который идет в ковычках. Пример :
есть текст : завтра я куплю "ферарри" . Надо скопировать слово ферарри. Буду очень признателен )

Добавлено через 10 минут
мой вариант :

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
char* buff;
void copy (char* str) {
int l;
 
l=strlen(str);
int count=0;
for (int i = 0 ; i<l;i++) {
if (str[i]=='"') count++;
while(count==1)
buff[i]=str[i] ;
}
}
но что-то делаю не так , ибо не работает (
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2015, 19:59
Ответы с готовыми решениями:

Скопировать текст из одного файла в другой, добавляя порядковый номер строки и количество символов в ней
Помогите с задачей, пожалуйста!!!:) спасибо заранее! Описать функцию Lines(FileIn, FileOut),...

Регулярные выражения C++. Как получить текст между заданных символов ?
Как получить в переменную wmatch то, что находится между &quot; one two end &quot; и &quot;.&quot; (в данном случае...

Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б.
Ребят , помогите плиз , послезавтра экзамен , вот нашел возможные задание , может кто подсказать ,...

Скопировать из файла часть символов
Требуется скопировать часть файла(txt) с позиции n до позиции m в поток и посчитать в этой части...

6
1 / 1 / 0
Регистрация: 16.10.2014
Сообщений: 34
28.01.2015, 20:39 2
Цитата Сообщение от romalikons Посмотреть сообщение
while(count==1)
buff[i]=str[i] ;
В этом месте у тебя i постоянная(равна одному и тому же числу), следовательно ты бесконечно присваиваешь итый символ str в buff. + нет условия выхода из while т.к. count = 1 после этого действия:
Цитата Сообщение от romalikons Посмотреть сообщение
count++
Добавлено через 24 минуты
Вообщем это кривое решение, но оно работает. Но желательно б его переделать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
char * Copy (char * str)
{
    int l = strlen(str);
    char * res = new char[l];
    int c = 0;
    int d = 0;
 
    for(int i(0);i<l;i++) res[i] = ' ';
 
    for(int i(0);i<l;i++)
    {
        if(str[i]=='"') d++;
 
        if(d%2==1)
        {
            res[c]=str[i];
            c++;
        }
    }
 
    res[l]='\0';
    return res;
}
1
Эксперт PHP
2974 / 2497 / 1176
Регистрация: 14.05.2014
Сообщений: 7,060
Записей в блоге: 1
28.01.2015, 20:54 3
Лучший ответ Сообщение было отмечено romalikons как решение

Решение

romalikons, вот еще одно кривое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char *copy(char *str)
{
    int len = strlen(str), j = 0;
    char *res = new char[len];
    for (int i = 0; i < len; ++i)
    {
        if (str[i] == '\"')
        {
            ++i;
            while (str[i] != '\"')
                res[j++] = str[i++];
            break;
        }
    }
    res[j] = 0;
    return res;
}
и главное не забываем в main освободить память после использования.
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
28.01.2015, 20:58  [ТС] 4
всем большое спасибо )
0
Эксперт PHP
2974 / 2497 / 1176
Регистрация: 14.05.2014
Сообщений: 7,060
Записей в блоге: 1
28.01.2015, 21:06 5
Цитата Сообщение от L-Dan Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
    for(int i(0);i<l;i++)
    {
        if(str[i]=='"') d++;
 
        if(d%2==1)
        {
            res[c]=str[i];
            c++;
        }
    }
romalikons, в этом решении, если будет не две, а больше кавычек, то может получиться не тот результат, который ожидался.
0
1 / 1 / 0
Регистрация: 16.10.2014
Сообщений: 34
28.01.2015, 21:36 6
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
в этом решении, если будет не две, а больше кавычек, то может получиться не тот результат, который ожидался.
имеется ввиду, что кавычки всегда должны идти парами, когда мы встречаем отрывающую, то счетчик увеличиваем на 1, тоесть копируем результат лишь при непарном количестве кавычек
0
Эксперт PHP
2974 / 2497 / 1176
Регистрация: 14.05.2014
Сообщений: 7,060
Записей в блоге: 1
29.01.2015, 02:10 7
L-Dan, таким образом, если кавычек будет четыре, то в переменную res скопируется то, что находится между первой парой кавычек + то, что находится между второй парой. Как я и говорю, результат может быть неожиданным.

Добавлено через 5 минут
Решил немного переделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// функция возвращает указатель на следующий после закрывающей кавычки символ
char *copy(char *str, char *res)
{
    if (res)
    {
        delete[] res;
        res = 0;
    }
    int len = strlen(str), i, j = 0;
    char *res = new char[len];
    for (i = 0; i < len; ++i)
    {
        if (str[i] == '\"')
        {
            ++i;
            while (str[i] != '\"')
                res[j++] = str[i++];
            break;
        }
    }
    res[j] = 0;
    return &str[i+1];
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2015, 02:10

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Скопировать текст из консоли в файл
после компиляции и выполнения программы borland c++ выскакивает черное окошко с информацией как...

Как скопировать текст программы в блокнот
Я написала программу, используя Borland C++ 3.0. Подскажите, пожалуйста, как скопировать текст этой...

Скопировать в первый файл текст из второго (в консоли)
Будьте добры,подскажи те с кодом,в билдере сделал,а в консоли не могу.

в строку X скопировать 6 символов из строки S после первой точки С++
Как скопировать определенное количество символов из одной строки в другую


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

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

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