このコードは、スペースを に置き換えまし%20
た。char 配列には、追加するのに十分なスペースが含まれているはず%20
です。
でセグメンテーション違反が発生する理由を理解するのを手伝ってもらえます*str = *tmp; // segfault at this location..
か?
#include <stdio.h>
#include <string.h>
char* encodeSpace(char* str) {
char *orig = str;
while (*str++);
str--;
char *tmp = --str;
while (*tmp-- == ' ');
tmp++;
while (tmp != orig) {
while(*tmp != ' ' && tmp != orig) {
*str = *tmp; // segfault at this location..
tmp--;
str--;
}
*str-- = '0';
*str-- = '2';
*str-- = '%';
tmp--;
}
return tmp;
}
main()
{
printf("output is %s", encodeSpace("My Name is john "));
}