Fopen: отличие текстового режима от бинарного - C (СИ)
Формулировка задачи:
Чем отличается работа с файлом в бинарном режиме от текстового режима при использовании fopen?
Читал что отличие заключается в том что якобы в текстовом режиме игнорируются невидимые символы типа \n.
Но на практике эта версия себя не оправдала.
Так в чем отличие?
И есть ли еще какие нибудь режимы кроме текстового и бинарного?
Решение задачи: «Fopen: отличие текстового режима от бинарного»
textual
Листинг программы
struct User { int age; int password; }; int main() { User u; u.age = 25; u.password = 900; const char* filename = "C:\\path\\data.txt"; FILE* f = fopen(filename, "r"); //fwrite((char*)&u, sizeof(User), 1,f); //fflush(f); User u1; fgets((char*)&u1, sizeof(User), f); std::cout << u1.age << " " << u1.password; std::cout << '\n'; return 0; }
Объяснение кода листинга программы
- Структура User содержит два поля: age и password, тип данных обоих — int.
- В функции main создается экземпляр структуры User с помощью оператора присваивания =: User u;
- Поля age и password инициализируются значениями 25 и 900 соответственно: u.age = 25; u.password = 900;
- В переменной типа const char* filename содержится строка
C:\\path\\data.txt
, которая представляет собой путь к файлу, в который будет производиться запись. - В функции fopen() открывается файл с указанным путем, в данном случае
C:\\path\\data.txt
, для чтения (режимr
). - //fwrite((char*)&u, sizeof(User), 1,f); — это комментарий, который указывает на возможность записи данных в файл, но в данном коде эта строка не выполняется.
- //fflush(f); — это еще один комментарий, который также относится к возможностям работы с файлами, но в данном коде эта строка не выполняется.
- Создается новый экземпляр структуры User с помощью оператора присваивания =: User u1;
- Данные из файла считываются в структуру User с помощью функции fgets(). При этом считывается только одно поле структуры User (возможно, в данном случае предполагается, что в файле записано только одно поле структуры).
- Поля age и password структуры User выводятся на экран с помощью функции std::cout <<.
- Возвращаемое значение функции main() — 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д