2013-10-26 1 views
-2

Давайте скажем, что у меня есть char * p и p имеет фразу «это непросто». и он заканчивается в конце. Я хочу выполнить поиск через p и где бы я ни столкнулся с 's', я хочу поставить вместо этого «101» без удаления каких-либо других символов. Итак, для этого примера p идет от «это непросто». to "thi101 i101 not ea101y." Я также могу использовать только заголовки stdio.h, stdlib.h и string.h.Как вставить строку символов в середину символа char * и сдвинуть все chararcters вправо без удаления ничего

char q[] = "s"; 
char r[] = "101"; 
    for(int j = 0; s[j]!='\0'; j++){ 
     if(s[j]==q[0]){ 
      int temp = 0; 
      s[j] = r[temp]; 
      temp++; 
      int temp2 = j; 
      while(temp<3){ 
       for(int k = length; k>j+1; k--){ 
        s[k]=s[k-1]; 

       } 
       s[j] = r[temp]; 
       temp++; 
       j++;      
      } 
      j = temp2; 
     } 
    } 
} 

s это строка, о которой я упоминал ранее, «это непросто».

Выход, который я получаю, является «thi011 i011 not ea», который не может быть прав.

+0

** Скажем, ** Я спрашиваю вас, что вы пробовали? И если в ближайшие 2 минуты ответа не будет, я также могу голосовать за это. – P0W

+0

По крайней мере, название было разумно сформировано как вопрос (хотя и немного длинный), что больше, чем большинство вопросов с одним представителем, размещенных здесь. Остальное, однако ... тьфу. – WhozCraig

+0

Я добавил фрагмент кода и то, что я получаю на данный момент. – user2923535

ответ

1

Сначала определите длину «s» (1) и «101» (3). Затем сдвиньте все символы после каждого появления «s» на 3-1 = 2 и поставьте «101».

Конечно, вы должны убедиться, что строковый буфер достаточно велик для операции.

Смежные вопросы