LINUX.ORG.RU

Конкатенация строк в стиле C


0

0

Есть строка char* str
Как получить строку char* str2 = "prefix" + str
т е как добавить спереди подстроку?
STL - нельзя юзать, только стандартные C-ые ф-ии
strcpy - глючит и в доке написано не юзать её!!!
anonymous

> strcpy - глючит и в доке написано не юзать её!!!

Нету такого. Там написано, что надо ее с умом юзать.

> Как получить строку char* str2 = "prefix" + str

strcat(strcpy(str2,prefix), str)

Только убедись, чтобы памяти в str2 было не меньше, чем strlen(prefix)+strlen(str)+1

Можешь так, если буфера готового нет:

str2=strcat(strcpy(malloc(strlen(prefix)+strlen(str)+1),prefix),str);

Die-Hard ★★★★★
()
Ответ на: комментарий от anonymous

> А маллок на нуль кто будет проверять?

А нахрена?

Уж если маллок NULL вернул, то все гарантированно грохнется (если
длина строки не гигабайты). Это ж тебе не ДОС.

Ok, если не нравится, можно к маллоку враппер налабать, типа

void halt(char *msg)
{
   fprintf(stderr, msg);
   exit(10);
}

inline void *mymalloc(size_t n)
{
  void *ptr=malloc(n);
  if(prt == NULL)
     halt("Not enough memory\n");
  return ptr;
}

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Да гоните их в шею! Это студенты - им трахаться негде!(с) анекдот
Еще один анонимус сессию по программированию видимо сдает. 
А преподы злые - не хотят на халяву ставить, какие-то стороки клеить
заставляют... Житья от них нету бедному студенту...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.