You need to append a null to the end of each substring you are copying. You can accomplish the same thing by initializing the structure to zero. Something like:
struct st info[3] = { 0 };
Also - you need to have your for loop range from 0 to 2 because those are the indexes you need to access this array. The first item is 0 in C. The best way to think about it as an offset - the zero offset value is the first one.
One tip: having a size value or practically any other constant used literally is a bad idea that is prone to cause errors. In your program, there are three items in the structure and you loop through each of them in the for statement. What happens if you decide to have five elements? You have to find each place where you used three and change it. This is where errors can happen because with a larger program you are likely to miss one. It is better to have a single definition that everything else uses :
#define InfoSize 3
struct st info[InfoSize] = {0};
for( int i = 0; i < InfoSize; ++i )
{
}
This way, if you need five or eight or twenty items you change only one thing.