Это похоже на древний формат структуры с фиксированным дополнением, поэтому эти fprintfs неверны.Должно быть:
fprintf(F1 ,"%.8s\t",detailsArr[i].name);
fprintf(F1 ,"%.1s",detailsArr[i].appType);
Мы также должны изменить строку scanf на
scanf("%8s",detailsArr[i].name);
, чтобы она могла на самом деле хранить все 8.
Причина, по которой это не сработало, в противном случае вашаФормат struct выглядит как строки с нулевым символом в конце, когда используется максимальный размер строки.Это требует обработки как таковой со строками формата printf и scanf, а также копирования и вывода с помощью strncpy.Это довольно неудобный код, поэтому он редко используется, за исключением низкоуровневых форматов дисков.