strcpy
и strcat
используются для копирования и объединения строк в выделенный массив символов.
Поскольку str
в не инициализированном виде, вы пишете в память, и это плохо, потому что вы повреждаете другие данные. В этот момент это может сработать, но рано или поздно ваша программа потерпит крах.
Вы должны выделить память при объявлении str:
char str[100];
Кроме того, strcat
неэффективен, так как он должен искать конец строки, чтобы знать, где объединяются символы. Использование sprintf
будет более эффективным:
sprintf(str, "\t<%s>[%s](%s) $ ", time, user, baseName);
Наконец, если вы не можете гарантировать, что сгенерированная строка будет соответствовать массиву, вам лучше использовать snsprintf.