ну вот будет даваццо масив.... и его надо будет сортировать несколько раз... суть в том что сортировка будет каждый раз происходить не с 0 елемента а с какого нить другого, и заканчиваццо не последним а заданым... и каждый раз один елемент(сам уже сделаю) будет заносиццо в другой масив.... при следующей сортировки один елемент опять же будет заносиццо в масив созданый при первой сортировке..... почему указатели??? потому что при перврй сортировке собьеться порядок елементов.... а при каждой следующей надо сохранять самый первый, тобишь исходный порядок.... так яснее?
А в чем проблема? Просто в цикле сортировки к указателю прибавляешь i, чтобы получать следующий элемент. А так тоже самое.
что не правельно в этом запросе? отсылаю его на сервер, а от сервера ни ответа ни привета Code: char *query=(char*)malloc(2048); strcpy(query,"POST /"); strcat(query,http_path); strcat(query," HTTP/1.0\nHost: "); strcat(query,http_host); strcat(query,"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 \r\n"); strcat(query,"Accept-Language: ru,en-us;q=0.7,en;q=0.3 \r\n"); strcat(query,"Accept-Encoding: gzip,deflate \r\n"); strcat(query,"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 \r\n"); strcat(query,"Keep-Alive: 300 \r\n"); strcat(query,"Connection: keep-alive \r\n"); strcat(query,"Content-Type: application/x-www-form-urlencoded; charset=UTF-8 \r\n"); strcat(query,"X-Requested-With: XMLHttpRequest \r\n"); strcat(query,"Referer: http://vkontakte.ru/index.php \r\n"); strcat(query,"Content-Length: 65 \r\n"); strcat(query,"Cookie: remixlang=0; remixchk=5; remixautobookmark=14; remixclosed_tabs=64; lang=0; remixgroup_closed_tabs=0 \r\n"); strcat(query,"Pragma: no-cache \r\n"); strcat(query,"Cache-Control: no-cache \r\n"); strcat(query,"op=a_login_attempt&email=mail%40mail.ua&pass=123456&expire=0");
Толку с такой замены не будет Целиком код покажи, и перед данными post запроса должен стоять двойной перенос строки
вот весь код Code: #include <windows.h> #include <stdio.h> #include <string.h> #pragma comment(lib, "ws2_32.lib") char* OpenURL(char *url) { WSADATA lpWSAData; SOCKET s; // Проверим на правильность введенный адрес. // Он должен начинаться с "http://" if (memcmp(url,"HTTP://",7)!=0 && memcmp(url,"http://",7)!=0) return(NULL); url+=7; // Инициализация библиотеки Ws2_32.dll. if (WSAStartup(MAKEWORD(1,1),&lpWSAData)!=0) return(NULL); // Получим имя хоста, номер порта и путь ---------------------------- char *http_host=strdup(url); // Имя хоста (HTTP_HOST) int port_num=80; // Номер порта по умолчанию (HTTP_PORT) char *http_path=NULL; // Путь (REQUEST_URI) char *pch=strchr(http_host,':'); if (!pch) { pch=strchr(http_host,'/'); if (pch) { *pch=0; http_path=strdup(pch+1); } else http_path=strdup(""); } else { *pch=0;pch++; char *pch1 = strchr(pch,'/'); if (pch1) { *pch1=0; http_path=strdup(pch1+1); } else http_path=strdup(""); port_num = atoi(pch); if (port_num==0) port_num = 80; } // Поучаем IP адрес по имени хоста struct hostent* hp; if (!(hp=gethostbyname(http_host))) { free(http_host); free(http_path); return(NULL); } // Открываем сокет s=socket(AF_INET, SOCK_STREAM, 0); if (s==INVALID_SOCKET) { free(http_host); free(http_path); return(NULL); } // Заполняем структуру sockaddr_in struct sockaddr_in ssin; memset ((char *)&ssin, 0, sizeof(ssin)); ssin.sin_family = AF_INET; ssin.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr[0]; ssin.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr[1]; ssin.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr[2]; ssin.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr[3]; ssin.sin_port = htons(port_num); // Выводим IP адрес хоста, с которым будем соединятся printf("Conecting to %d.%d.%d.%d...",(unsigned char)hp->h_addr[0], (unsigned char)hp->h_addr[1], (unsigned char)hp->h_addr[2], (unsigned char)hp->h_addr[3]); // Соединяемся с хостом if (connect(s, (sockaddr *)&ssin, sizeof(ssin))==-1) { free(http_host); free(http_path); printf("Error\n"); return(NULL); } printf("Ok\n"); // Формируем HTTP запрос char *query=(char*)malloc(2048); strcpy(query,"POST /"); strcat(query,http_path); strcat(query," HTTP/1.0\nHost: "); strcat(query,http_host); strcat(query,"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 \r\n"); strcat(query,"Accept-Language: ru,en-us;q=0.7,en;q=0.3 \r\n"); strcat(query,"Accept-Encoding: gzip,deflate \r\n"); strcat(query,"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 \r\n"); strcat(query,"Keep-Alive: 300 \r\n"); strcat(query,"Connection: keep-alive \r\n"); strcat(query,"Content-Type: application/x-www-form-urlencoded; charset=UTF-8 \r\n"); strcat(query,"X-Requested-With: XMLHttpRequest \r\n"); strcat(query,"Referer: http://vkontakte.ru/index.php \r\n"); strcat(query,"Content-Length: 65 \r\n"); strcat(query,"Cookie: remixlang=0; remixchk=5; remixautobookmark=14; remixclosed_tabs=64; lang=0; remixgroup_closed_tabs=0 \r\n"); strcat(query,"Pragma: no-cache \r\n"); strcat(query,"Cache-Control: no-cache \r\n"); strcat(query,"op=a_login_attempt&email=mail%40mail.ua&pass=password&expire=0"); // Выводим HTTP запрос printf("%s",query); // Отправляем запрос серверу int cnt=send(s,query,strlen(query),0); // Освобождаем память free(http_host); free(http_path); free(query); // Проверяем, не произошло ли ошибки при отправке запроса на сервер if (cnt==SOCKET_ERROR) return(NULL); cnt=1; // Получаем ответ с сервера --------------------------------- int size=1024*1024; // 1Mb char *result=(char*)malloc(size); strcpy(result,""); char *result_ptr=result; while (cnt!=0 && size>0) { cnt=recv (s, result_ptr, sizeof(size),0); if (cnt>0) { result_ptr+=cnt; size-=cnt; } } *result_ptr=0; // Деинициализация библиотеки Ws2_32.dll WSACleanup(); return(result); } void main(void) { char URL[1024]=""; (void)scanf("%s",URL); char *result=OpenURL(URL); if (result) { printf("%s",result); free(result); } else { printf("Error # WSABASEERR+%d\n",WSAGetLastError()-WSABASEERR); } getchar(); getchar(); }
по аналогии передаю вот такой вот пакет, и что то опять не правельно хелп ми Code: char *query=(char*)malloc(2048); strcpy(query,"POST /"); strcat(query,http_path); strcat(query," HTTP/1.0\nHost: "); strcat(query,http_host); strcat(query,"\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 "); strcat(query,"\r\nAccept-Language: ru,en-us;q=0.7,en;q=0.3 "); strcat(query,"\r\nAccept-Encoding: gzip,deflate "); strcat(query,"\r\nAccept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 "); strcat(query,"\r\nKeep-Alive: 300 "); strcat(query,"\r\nConnection: keep-alive "); strcat(query,"\r\nContent-Type: application/x-www-form-urlencoded; charset=UTF-8 "); strcat(query,"\r\nX-Requested-With: XMLHttpRequest "); strcat(query,"\r\nReferer: Referer: http://*** "); strcat(query,"\r\nContent-Length: 1588"); strcat(query,"\r\nCookie: remixlang=0; remixchk=5; remixautobookmark=14; remixclosed_tabs=64; lang=0; remixgroup_closed_tabs=0 "); strcat(query,"\r\nPragma: no-cache"); strcat(query,"\r\nCache-Control: no-cache"); strcat(query,"\r\nsql_query=UPDATE+%60account%60+SET+%60id%60+%3D+%2712%27%2C+%60username%60+%3D+%27Xexe%27%2C+%60sha_pass_hash%60+%3D+%27d7c390a3872b468d05723ded074ce85887b45ea3%27%2C+%60gmlevel%60+%3D+%273%27%2C+%60sessionkey%60+%3D+%271802AD963972B2EEDD19960759F6BDD583BB726E290C1DFDADB90C01FD51BA1F8A356B83608E3C6D%27%2C+%60v%60+%3D+%270%27%2C+%60s%60+%3D+%270%27%2C+%60email%60+%3D+%27Kaka%40meil.ua%27%2C+%60joindate%60+%3D+%272009-03-15+21%3A15%3A43%27%2C+%60last_ip%60+%3D+%27192.168.3.89%27%2C+%60failed_logins%60+%3D+%270%27%2C+%60locked%60+%3D+%270%27%2C+%60last_login%60+%3D+%272009-04-25+22%3A57%3A54%27%2C+%60online%60+%3D+%270%27%2C+%60expansion%60+%3D+%272%27%2C+%60mutetime%60+%3D+%270%27%2C+%60locale%60+%3D+%278%27+WHERE++%60id%60+%3D+%2712%27+AND+%60username%60+%3D+%27Xexe%27+AND+%60sha_pass_hash%60+%3D+%27d7c390a3872b468d05723ded074ce85887b45ea3%27+AND+%60gmlevel%60+%3D+%270%27+AND+%60sessionkey%60+%3D+%271802AD963972B2EEDD19960759F6BDD583BB726E290C1DFDADB90C01FD51BA1F8A356B83608E3C6D%27+AND+%60v%60+%3D+%270%27+AND+%60s%60+%3D+%270%27+AND+%60email%60+%3D+%27Kaka%40meil.ua%27+AND+%60joindate%60+%3D+%272009-03-15+21%3A15%3A43%27+AND+%60last_ip%60+%3D+%27192.168.3.89%27+AND+%60failed_logins%60+%3D+%270%27+AND+%60locked%60+%3D+%270%27+AND+%60last_login%60+%3D+%272009-04-25+22%3A57%3A54%27+AND+%60online%60+%3D+%270%27+AND+%60expansion%60+%3D+%272%27+AND+%60mutetime%60+%3D+%270%27+AND+%60locale%60+%3D+%278%27++LIMIT+1%3B&sql_db=realmdtest&sql_port=3306&sql_server=localhost&sql_passwd=password&sql_login=root&act=sql&sql_act=query&sql_tbl=account&submit=1&sql_goto=&sql_confirm=Yes");
Ты меня не так понял видимо. Я имел ввиду что запрос должен выглядеть примерно так POST /cgi-bin/auth HTTP/1.0\r\n Host: mail.ru\r\n Content-type: application/x-www-form-urlencoded\r\n Content-length: длинна содержимого\r\n\r\n Содержимое
Это может быть вызвано повреждением кучи и указывает на ошибку в http.exe или в одной из загруженных им DLL. Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит http.exe
Code: strcpy(query,"POST /"); strcat(query,http_path); strcat(query," HTTP/1.0\nHost: "); strcat(query,http_host); strcat(query,"\r\nConnection: close \r\n"); strcat(query,"Content-Type: application/x-www-form-urlencoded; charset=UTF-8 \r\n"); strcat(query,"Cookie: remixlang=0; remixchk=5; remixautobookmark=14; remixclosed_tabs=64; lang=0; remixgroup_closed_tabs=0 \r\n"); strcat(query,"Content-Length: 62\r\n\r\n"); strcat(query,"op=a_login_attempt&email=mail%40mail.ua&pass=password&expire=0");
s_p_a_m, прекоати юзать char* для формирования данных. юзай std::string и оператор +. иначе с таким подходом к расчету требуемой памяти у тебя всегда будут косяки.
народ у меня такая проблема, как мне лучше реализовать проверку вводит ли пользователь нужные мне символы или другие, у меня 4 варианта, допустим 1,2,3,4 , при вводе другого значения пользователю должны предложить снова ввести символ, пробовал atoi , чёто не получается((
Как зачем преобразование, я ввожу строку а на выходе мне надо чтобы было число 1 или 2 или3 или 4 , при этом если я ввожу не одно из этих чисел мне снова надо дать возможно ввести, и так пока я не введу одно из нужных мне чисел. Было бы логично так Code: while(true){ cin>>x; y=atoi(x) if(y==1||y==2||y==3||y==4){ break; } x=""; } но атуи чёто не пашет(((
Выложи код целиком. Зачем тебе atoi? Ты не можешь сравнивать х и "1"||"2"||"3"||"4"? И проставь точки с запятой.