Открытие файла в бинарном режиме - C (СИ)
Формулировка задачи:
Здравствуйте! Есть задание (подробности не имею значения), нужно сделать в текстовом и бинарном режимах. В текстовом получилось, а вот с бинарным проблемы. Что не так?
#include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { const char fname[20]="abc.txt"; int x, y; typedef struct { char player[20]; char goals[20]; char assists[20]; char cards[20]; } football; football A[100]; printf("Number of players: "); scanf("%d",&y); FILE *fp; // fp=fopen(fname, "w"); fp=fopen(fname,"wb"); if (fp != NULL) { // for (x=0; i<y;x++) { printf("\nPlayers surname: "); scanf("%s", &A[x].player); printf("Number of goals: "); scanf("%s", &A[x].goals); printf("Number of assists: "); scanf("%s", &A[x].assists); printf("Number of cards:"); scanf("%s", &A[x].cards); fwrite(A,sizeof(football),50,fp); //fprintf(fp,"%s %s %s %s\n\n", A[x].player, A[x].goals, A[x].assists, A[x].cards); } fclose(fp); return 0; }
Решение задачи: «Открытие файла в бинарном режиме»
textual
Листинг программы
// while (!feof(fp)) { // fscanf(fp, "%s %s %s %s\n", A[z].player , A[z].goals, A[z].assists , A[z].cards); z++;}
Объяснение кода листинга программы
- Открытие файла в бинарном режиме.
- Чтение данных из файла до тех пор, пока не достигнут конец файла (feof).
- Форматированный ввод данных из файла с помощью функции fscanf.
- Заполнение структур данных с помощью полученных из файла значений.
- Увеличение индекса для перехода к следующей записи в файле.
- Передача данных из файла в структуру данных.
- Чтение строки из файла с помощью функции fscanf.
- Разделение строки на отдельные элементы с помощью функции strtok.
- Передача отдельных элементов в соответствующие поля структуры данных.
- Закрытие файла после окончания чтения.