First of all, input[64] is out of range. C uses zero-based array, so only indexes 0..63 are valid here. Reading out of range element results in getting unpredictable data, writing out of range may result in program data and code crash. (BTW, accessing out of string buffer range was a very common reason for programs security vulnerability.)
Secondly, the array you use is not initialized, so you may got any unpredictable (garbage, random) value of any element. To initialize it with zeros you may write
char input[64] = {0};
Thirdly, the strings and char arrays are not the same things. Each string literal like "Hello, world" is zero-terminated string containing 12 string characters and 1 zero character, each standard string being properly called would save a zero-terminated string into a char array (previously allocated string buffer). To store such a string in the buffer (array) this array should have a room for each char and for zero char. But not any array of a chars should contain a string, it could be just an array of any chars to be treated other way than zero-terminated string. To hold the string in the example you may use
char input[64] = "Hello, world";
but only input[12] would be '\0' (zero char), input[13] .. input[63] would still be uninitialized.
input[64]is an error.input[64]you access data outside the array, causing Undefined Behavior.charobjects. The array can contain a string, which is a sequence of characters followed by the'\0'-byte, but it does not have to contain a string, it can be just a bunch ofchar's. In your program the values in the array are not initialized, can have any random value and reading them may cause UB (unlikely on modern systems wherechardoes not have a trap representation).