2013-11-18 7 views
0

Я хочу вставить символы в середину массива символов в C, но сначала я хочу сместить его вправо каждый раз перед добавлением символа, чтобы я не делал потерять то, что уже находится в массиве char (называемое вводом), путем перезаписи.Смещение массива символов до добавления к нему

ответ

0

Я предполагаю, что вы завершаете массив с нулевым символом, поскольку используете strlen. В этом случае я уверен, что первая итерация цикла for запишет нулевой символ предыдущим символом, и вы, похоже, не замените его. Попробуйте работать

for(k = strlen(input) + 1; k > place42; k--)... 

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

+0

Это сработало! Благодаря! – thetypist

0

Почему бы не написать обычную процедуру вставки с использованием стандартных функций строки C? Что-то вроде этого:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

// insert "ins" into "src" at location "at" 
char *insert(char *src, char *ins, int at) { 
     char dst[strlen(src) + strlen(ins) + 1]; 
     strncpy(dst, src, at); 
     strcpy(dst + at, ins); 
     strcpy(dst + at + strlen(ins), src + at); 
     return strdup(dst); 
     //return strcpy(src, dst); // you could return this if you know src is long enough 
} 

int main(void) { 

     char *src = "abcdef"; 
     char *ins = "123"; 
     printf("%s\n", insert(src, ins, 3)); 
     return 0; 
} 

печатает

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