Your code doesn't even compile.
C strings are zero-terminated strings. That is, a zero character ('\0') indicates the end of the string. For this, "Hello" is not 5 characters long, but 6: "Hello\0". Note: '\0' is a single character; the backslash before the 0 is the escape sequence.
char str[6] = "Hello";
would solve your problem.
Or you just do not specify the size, and the compiler will figure it out for you:
char str[] = "Hello";
Or you do not copy the string literal into an array (if you do not have to), but just reference it via its memory address:
const char * str = "Hello";
In the latter case, remember, you do not have a copy of the string literal "Hello". You are pointing to the string literal, and as such, it must not be modified (e.g., by saying str[0] = 'h'; hence the type is const char *). You can still point somewhere else by str though, e.g.: str = "This works too".