2013-08-23 4 views
-2

Мне нужно вставить строку в другую строку в определенном месте. Вот простой пример:Как вставить строку в другую строку в C

char *a = "Dany S."; 
char *b = "My name is *a , I come from ... "; 

Таким образом, в строке b вместо *a я ожидаю иметь Dany S.

Как сделать это?

+0

Строковые литералы могут ** не изменяться **. Скопируйте содержимое в массив. Найдите строку, которую нужно заменить. Покажите нам, что вы пробовали. – Mahesh

+1

Когда-либо слышал о стандартной библиотеке C? – Macmade

+2

Я действительно должен заставлять вас просматривать стандартную библиотеку, вам будет хорошо иметь представление о том, что там, но я буду красив и скажу ['snprintf'] (http://linux.die.net/man/3/snprintf). – Kevin

ответ

2

Вы можете использовать Printf т.е .:

#include <stdio.h> 
char *a = "Dany S."; 
char *b = "My name is %s , I come from ... "; 

printf(b, a); 
+0

Разве это не sprintf? – MasterPlanMan

+0

Существует целая семья, выходы printf для stdout, fprintf (файл, файл, sprintf для строки, тогда есть версии v .., не зная больше о том, что требуется ... –

+0

Вопрос не в том, как печатать что-то на экране, но для «вставки строки в другую строку». – MasterPlanMan

11

Лучшее/простым способом было бы использовать стандартные соглашения C:

char *a = "Dany S."; 
char *b = "My name is %s, I come from..."; 

char *c = malloc(strlen(a) + strlen(b)); 

sprintf(c, b, a); 

Тогда c содержит вашу новую строку. Когда вы закончите с c, вам нужно будет освободить память:

free(c); 

Если вы хотите использовать c в выходе, который завершает линию, то вы можете объявить b как:

char *b = "My name is %s, I come from...\n"; 
+2

Как насчет символа конца строки? – MasterPlanMan

+2

Размер char * не возвращает размер строки. Используйте strlen для этого. – MasterPlanMan

+0

@AdamGalarneau вы имеете в виду конец строки или конец строки? Конец строки не был обозначен OP как необходимость. Конец строки берется неявно. Я поймал проблему 'sizeof' как раз перед тем, как вы сделали свой комментарий. :) – lurker

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