Я пытаюсь придумать простую переносимую подпрограмму, которая в конечном итоге будет использоваться в настраиваемом модуле apache 2.2 (или даже более старом), поскольку я делаю специальный проект с участием древних компьютеров.
What I 'Я пытаюсь сделать это извлечь строку запроса из URL.Давайте предположим, что метод запроса - GET, а аргументы удалены из остальной части URL.
При запуске этой программы возникает ошибка сегментации.
Я считаю, что это происходит, когда я копирую токен во второй массив символов malloc'd, но я не понимаю, почему.Я знаю, что если я уберу этот strcpy вместе с двумя strsep внизу, я не получу ошибку сегментации.
Пожалуйста, скажите мне, как исправить.или если есть более общепринятая функция C (не strtok) для разделения строк, то я бы пошел на эту функцию.
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
char str[]={"A=1&B=2&C=3"}; //my query string
char delim[]={"&"}; //Delimiters are &
char delim2[]={"="}; // and =
char* rstr=malloc(1000); //allocate space for strsep
char* rtok=malloc(1000); //allocate space for strsep
strcpy(rstr,str); //Put our string in
char* token;
char* t;
while ((token=strsep(&rstr,delim))!=NULL){
//we have a token. Copy it over
strcpy(rtok,token);
//And split name and value
t=strsep(&rtok,delim2);if(t){printf("N %s ",t);}
t=strsep(&rtok,delim2);if(t){printf("V %s ",t);}
}
free(rstr);
free(rtok);
}