I would like to concatenate 2 strings in C using strcat(), but it is always add some random characters to the beginning of the new concatenated string. Could someone please tell me why is this happening and how to solve it?
This is my code:
#include "stdio.h"
#include "string.h"
int main(void)
{
char text[100];
strcat(text, "Line 1");
strcat(text, "Line 2");
printf("%s", text);
return 0;
}
When I execute this I get the following output:
??? Line1Line2
I would appreciate any help.
Thank you.
The line
strcat(text, "Line 1");
has undefined behavior, because both arguments of the strcat
function call must point to strings, i.e. to null-terminated sequences of characters. However, the first argument is not guaranteed to point to a string, because text
consists of indeterminate values, because it is not initialized.
You have two options to fix this bug. You can either
strcat
, set the first character of text
to a terminating null character, i.e. text[0] = '\0';
, so that text
contains a valid (empty) string, orstrcat
with strcpy
, because strcpy
does not require that the first function argument points to a valid string.