0

このコードは、スペースを に置き換えまし%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         "));
}
4

2 に答える 2