Форум программистов, компьютерный форум CyberForum.ru

Выбор слова из массива - C++

Восстановить пароль Регистрация
 
Romadzao
7 / 7 / 1
Регистрация: 02.07.2012
Сообщений: 120
04.07.2012, 18:09     Выбор слова из массива #1
Есть массив: char *query=(char*)malloc(68);
Он улетает на сервер и возвращается другим.
Вот таким:

HTTP/1.1 200 OK
Server: nginx/1.1.14
Date: Wed, 04 Jul 2012 13:52:48 GMT
Content-Type: text/html
Content-Length: 7
Connection: keep-alive
X-Powered-By: PHP/5.2.6-1+lenny16

badPassapplication/x-www-form-urlencoded
do=CheckLogin&username=Admin&pass=88feab2ff325714e1c1a646ca1a5f98d

Меня интересует только слово badPass, всё что до него - сервер рассказывает мне о себе, всё что после - осталось от запроса на сервер (можно перед recv чистить массив, но проц лишние тики будет делать). Нюанс: сниффер всё ненужное мне помещает в Responce Header, а badPass в Responce Content, значит есть между ними разница.
Вопрос: как всё-таки мне из массива вытащить нужное слово и в переменную записать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2012, 18:09     Выбор слова из массива
Посмотрите здесь:

C++ Как вытащить элемент из массива не используя цикл и выбор?
C++ Выбор в новый массив всех ненулевых элементов одномерного заданнова массива
C++ Как мне сделать выбор нужного массива?
Выбор случайного элемента массива C++
Выбор слова или словосочетания из списка C++
Выбор значений из массива по определенной закономерности C++
Сформировать слова из массива бит C++
Выбор чисел из массива строк C++
Реализовать случайный выбор одного из элементов массива типа std::string C++
C++ Сортировка массива,выбор индекса максимального
Сортировка массива по заданию выбор индекса максимального C++
Выбор элементов массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rlib
20 / 20 / 1
Регистрация: 01.05.2012
Сообщений: 60
04.07.2012, 18:18     Выбор слова из массива #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <string.h>
void f(const char *query, char *buf, unsigned long bufsiz) {
/*
   query: ваш массив
   buf: буффер куда копировать 
   bufsiz: размер буффера
*/
  char *ss = "badPass";
  char *p = strstr(query, ss);
  if (p) {
      strncpy (char *buf, p, bufsiz);
  }
}
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
04.07.2012, 18:53     Выбор слова из массива #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    static char query[256] = "badPassapplication/x-www-form-urlencodeddo=CheckLogin&username=Admin&pass=88feab2ff325714e1c1a646ca1a5f98d";
    char* buf = NULL; char sw[] = "badPass";
    if ((buf = strstr(query, sw)) != NULL)
    {
        char string[256] = "\0"; int i = 0;
        for (buf+=strlen(sw); *buf != '\0'; *buf++)
            string[i++] = *buf;
 
        printf("%s\n",string);
    }
 
    _getch();
 
    return 0;
}
Romadzao
7 / 7 / 1
Регистрация: 02.07.2012
Сообщений: 120
04.07.2012, 18:59  [ТС]     Выбор слова из массива #4
strstr и char *buf подчёркивает, мол ошибка тут, но дело даже не в этом, сервер мне может вернуть бэдПасс или мой логин, если вернёт логин, например Naprimer, ваша функция ведь его не вытащит, мне функция нужна именно для нахождения разницы между badPass и Naprimer. Но всё равно спасибо за ответ!
rlib
20 / 20 / 1
Регистрация: 01.05.2012
Сообщений: 60
04.07.2012, 19:07     Выбор слова из массива #5
Hу, можно модифицировать на такое:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string.h>
typedef enum {FALSE=0, TRUE=1} BOOL;
BOOL f(const char *query, char *buf, unsigned long bufsiz) {
/*
   query: ваш массив
   buf: буффер куда копировать 
   bufsiz: размер буффера
*/
  char *r1 = "badPass";
  char *r2 = "Naprimer";
  char *p = strstr(query, r1);
  if (p) {
       strncpy (char *buf, p, bufsiz);
       return TRUE;
  }
  p = strstr(query, r2); 
  if (p) {
    strncpy (char *buf, p, bufsiz);
    return TRUE;
  }
  return FALSE;
}
Добавлено через 2 минуты
Т.е. если вы не нашли нужную вам подстрочку в респонзе от сервера, то функция возвратит FALSE.
Иначе, функция возвратит TRUE и в буфере вернет искомую подстрочку.
Yandex
Объявления
04.07.2012, 19:07     Выбор слова из массива
Ответ Создать тему
Опции темы

Текущее время: 18:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru