С вашим объявлением fo [1] не существует, и запись в него - неопределенное поведение для C и C ++.
Измените ваше объявление на это, чтобы сделать fo [1] допустимым элементом
struct forces{
double fo[2];
double ft[1];
};
В C и C ++ (и большинстве похожих языков) объявление foo [5] создает 5-элементный массив с допустимыми значениями индекса [0] ... [4].int foo [1] имеет только допустимый индекс foo [0]
С вашим кодом вы видите fo [1] вместо ft [0], потому что ваш компилятор поместил две двойные переменные вместе в память без пробела(отступ) между ними.