Я пишу приложение fastcgi для своего сайта в C. Не спрашивай почему, оставь всю эту часть.
Просто помогите мне с этой проблемой - я хочу заменить пробелы в строке запроса на% 20.
Вот код, который я использую, но я не вижу 20 в выводе, только%. Где проблема?
Код:
unsigned int i = 0;
/*
* Replace spaces with its hex %20
* It will be converted back to space in the actual processing
* They make the application segfault in strtok_r()
*/
char *qstr = NULL;
for(i = 0; i <= strlen(qry); i++) {
void *_tmp;
if(qry[i] == ' ') {
_tmp = realloc(qstr, (i + 2) * sizeof(char));
if(!_tmp) error("realloc() failed while allocting string memory (space)\n");
qstr = (char *) _tmp;
qstr[i] = '%'; qstr[i + 1] = '2'; qstr[i + 2] = '0';
} else {
_tmp = realloc(qstr, (i + 1) * sizeof(char));
if(!_tmp) error("realloc() failed while allocating string memory (not space)\n");
qstr = (char *) _tmp;
qstr[i] = qry[i];
}
}
В коде qry - это char *, это фактический параметр функции.
Я попытался с i + 3, 4, 5 в realloc () в блоке заменителя пространства, безуспешно.