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;
}

Объяснение кода листинга программы

  1. Структура User содержит два поля: age и password, тип данных обоих — int.
  2. В функции main создается экземпляр структуры User с помощью оператора присваивания =: User u;
  3. Поля age и password инициализируются значениями 25 и 900 соответственно: u.age = 25; u.password = 900;
  4. В переменной типа const char* filename содержится строка C:\\path\\data.txt, которая представляет собой путь к файлу, в который будет производиться запись.
  5. В функции fopen() открывается файл с указанным путем, в данном случае C:\\path\\data.txt, для чтения (режим r).
  6. //fwrite((char*)&u, sizeof(User), 1,f); — это комментарий, который указывает на возможность записи данных в файл, но в данном коде эта строка не выполняется.
  7. //fflush(f); — это еще один комментарий, который также относится к возможностям работы с файлами, но в данном коде эта строка не выполняется.
  8. Создается новый экземпляр структуры User с помощью оператора присваивания =: User u1;
  9. Данные из файла считываются в структуру User с помощью функции fgets(). При этом считывается только одно поле структуры User (возможно, в данном случае предполагается, что в файле записано только одно поле структуры).
  10. Поля age и password структуры User выводятся на экран с помощью функции std::cout <<.
  11. Возвращаемое значение функции main() — 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы