Добавить строку в Char Pointer в C - PullRequest
1 голос
/ 11 октября 2011

Я хочу добавить строку в указатель на символ, как я могу это сделать?

Например:

указатель на символ - это символ * имя_процесса; и у меня есть массив символов с именем second. Содержит несколько символов.

Я хочу скопировать второе имя в process_name.

Ответы [ 4 ]

3 голосов
/ 11 октября 2011

Если вы знаете размер буфера, на который указывает имя_процесса, вы можете использовать strncpy ().

char * strncpy ( char * destination, const char * source, size_t num );

Например:

strncpy( process_name, second, process_name_size );
process_name[ process_name_size - 1 ] = '\0';
2 голосов
/ 11 октября 2011

Вы можете использовать 'strcat' или 'strncat' для объединения двух строк. Но ваш буфер имя_процесса должен быть достаточно большим, чтобы содержать обе строки. strcat будет обрабатывать \ 0-байты за вас, но я все равно рекомендую вам использовать strncat с фиксированной длиной.

 char *strcat(char *restrict s1, const char *restrict s2);
 char *strncat(char *restrict s1, const char *restrict s2, size_t n);

Пример использования будет:

process_name = realloc(process_name, strlen(process_name) + strlen(second));
strncat(process_name, second, strlen(second));

Возможно, это не лучший пример, но он должен показывать общее направление.

1 голос
/ 11 октября 2011

Строго говоря, вы не можете «добавить строку» к указателю на символ.

Вы можете добавить строку в буфер, на который указывает указатель на символ ЕСЛИ в буфере достаточно выделенного пространства (плюс один для завершения '\0') с использованием стандартного библиотечного вызова, такого как strncpy() [зависит от ваших точных требований, вставка или добавление и т. д.].

0 голосов
/ 12 октября 2011

Я решаю эту проблему с помощью функции strdup ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...