вопрос по программе на Си

Тема в разделе "WASM.BEGINNERS", создана пользователем vadak, 23 янв 2011.

  1. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    Не могу никак вникнуть что ей нужно, уже стал валить на компилятор. Из строки нужно выдернуть три массива символов, но вот беда первый цикл нормально проходит, на втором счетчик увеличивается но строка не копируется. Собственно сама программа:
    Код (Text):
    1. #include <stdio.h>
    2. #include <string.h>
    3. int main(void)
    4. {
    5. char ip[35] = "ip=192.168.0.1&low=0&high=80";
    6. char data[35];
    7. char data1[35];
    8. int i;
    9.  
    10.     memset(data, 0, sizeof(data));
    11.    for(i = 0; ip[i+3] != '&'; i++)
    12.        data[i] = ip[i+3];
    13.          i++;
    14.    memset(data, 0, sizeof(data));
    15.    for(i; ip[i+7] != '&'; i++)
    16.        data1[i] = ip[i+7];
    17.          
    18. return 0;
    19. }
    Компилятор Pelles C 6.00 Win2000
     
  2. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Мне кажется, что строка копируется, просто ты не туда смотришь. И наводит меня на такие подозрения обнуление массива data, после того как этот массив заполняется чем-то в первом цикле.
     
  3. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    Ну да я его намерено обнуляю после первого цикла, то что не копируется это точно. я бы протестировал на другом компиляторе просто под рукой нет.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    во втором цикле ip[i+7] указывает на 0&high=80. Может разок второй цикл и выполнится, но не более.
     
  5. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    а все вопрос решен, дело было во мне, точнее в моей криворукости!
     
  6. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    Код (Text):
    1. #include <stdio.h>
    2. #include <string.h>
    3. int main(void)
    4. {
    5. char ip[35] = "ip=192.168.0.1&low=0&high=80";
    6. char data[35];
    7. char data1[35];
    8. int i;
    9. int u =0;
    10.     memset(data, 0, sizeof(data));
    11.    for(i = 0; ip[i+3] != '&'; i++)
    12.        {
    13.        data[i] = ip[i+3];
    14.        }
    15.        i++;
    16.     memset(data, 0, sizeof(data));
    17.    for(i; ip[i+7] != '&'; i++)
    18.        {
    19.        data1[u] = ip[i+7];
    20.        }  
    21. return 0;
    22. }
    вот так работает. всех благодарю за поддержку!
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    vadak
    Товарищ, вы жжоте.
     
  8. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    vadak
    Во втором цикле запись идёт не в начала массива data1.
     
  9. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    vadak
    А во втором варианте нужно как бэ увеличивать значение u, не? Иначе скопируется только последний символ от low=xxxx.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    KeSqueer
    Ты тоже решил повеселить? ^)
    Начала
     
  11. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Да это всё рассеянность...