Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > копирование фрагмента строки в массив


Автор: MZ412 12.1.2010, 00:12
Приветствую.
Пытаюсь решить следующую задачку:
имеем строку 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]);
}


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

Автор: djamshud 12.1.2010, 00:20
Ну да, велосипед.

Код

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


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

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

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

Автор: MZ412 12.1.2010, 00:37
Благодарю!
Как то не додумался работать с указателями и проморгал вызов strchr )

Автор: djamshud 12.1.2010, 00:42
Не за что).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)