Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> копирование фрагмента строки в массив 
V
    Опции темы
MZ412
Дата 12.1.2010, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Приветствую.
Пытаюсь решить следующую задачку:
имеем строку str1 вида "abc = xyz"
нужно скопировать в строку str2 всё, что находиться после знака = 

Вот как я это сделал:

Код

#include <stdio.h>
#include <string.h>

int main()
{
        char str1[BUFSIZ] = "abc = xyz";
        int i;
        int c = 0;
        int pos = 0;
        char str2[BUFSIZ];

        //вычисляем позицию символа = в строке
        for (i = 0; i < strlen(str1); i++)
        {
                if (str1[i] == '=')
                {
                        pos = i;
                }
        }

        //перебираем str1 с нужной нам позиции
        for (i = pos; i < (strlen(str1)); i++)
        {
                //всё, кроме пробела и символа = в str2
                if (str1[i] != '=' && str1[i] != ' ')
                {
                        str2[c] = str1[i];
                        c++;
                }
        }

        //собственно вывод
        for (i = 0; i < strlen(str2); i++)
                printf("%c", str2[i]);
}


Скажите, я изобрёл велосипед и для данной задачи есть стандартный вызов, или я думаю в правильном направлении?
Есть ли грубые ошибки в коде?

Это сообщение отредактировал(а) MZ412 - 12.1.2010, 00:15
PM MAIL   Вверх
djamshud
Дата 12.1.2010, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Ну да, велосипед.

Код

char str1[]="abc=xyz";
char *substr=strchr(str1,'=');
char str2[strlen(substr)];
strcpy(str2,substr+1);


Еще проверками обставить и будет годный код.

Добавлено через 6 минут и 46 секунд
Т.е. вообще "стандартный вызов", только без копирования результирующей подстроки (и опять же без проверки), это
Код

char *str2=strchr(str1,'=')+1;


Это сообщение отредактировал(а) djamshud - 12.1.2010, 00:22


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
MZ412
Дата 12.1.2010, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Благодарю!
Как то не додумался работать с указателями и проморгал вызов strchr )
PM MAIL   Вверх
djamshud
Дата 12.1.2010, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Не за что).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.