int k, n, maxval1, maxval2, classnum;
char dataArray[n][3];
n
не инициализируется, поэтому может иметь любое значение, и, следовательно, ваш код имеет неопределенное поведение .
эээ ... это не используется в любом случае.
Другая проблема в коде - ваш буфер данных:
char str[50];
должен быть достаточно большим, чтобы вместить содержимое файла, что, вероятно, не является и вызывает неопределенное поведение .