копирование части массива char в строку в c - PullRequest
2 голосов
/ 01 июня 2011

Я прочитал много предложенных вопросов, но все еще не могу найти ответ. Я знаю, что содержимое в буфере имеет значение NULL, оканчивающееся char array, и я хочу скопировать его в динамически выделенную char array. Тем не менее, я продолжал получать ошибку сегментации от функции strcpy. Спасибо за любую помощь.

void myFunction()
{
    char buffer[200];

    // buffer was filled by recvfrom correctly, and can be printed out with printf()
    char *message = malloc(200);

    strcpy(message, buffer[1]);
}

////////////////

хорошо, я попробовал strcpy(message, &buffer[1]); strcpy(message, buffer);, но ничего не получалось !!

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Это работает для меня. Возможно ли, что ваш буфер не завершен нулем?

char buffer[200];
buffer[0] = 'h';
buffer[1] = 'e';
buffer[2] = 'l';
buffer[3] = 'l';
buffer[4] = 'o';
buffer[5] = '\0';

// buffer was filled by recvfrom correctly, and can be printed out with printf()
char *message = (char *)malloc(200);
strcpy(message, buffer);
1 голос
/ 01 июня 2011

Ваш вызов strcpy(3) неверен. Измените его на следующее:

    buffer[199] = '\0';
    strcpy(message, &buffer[1]);

strcpy(3) имеет следующую подпись:

 char *
 stpcpy(char *s1, const char *s2);

Вы прошли:

 char *stpcpy(char *s1, const char s2); /* won't work */

Я бы предложил использовать memcpy(3) вместо strcpy(3), поскольку strcpy(3) полагается на нулевой символ для завершения строки.

...