В чем разница между режимами файлов r + и a + в c?


Ответ 1:

В c: предпочитаю книгу балагурусами

r +: открыть файл для чтения / записи. Указатель файла начинается с начала файла

r: открыть файл только для чтения. Указатель файла начинается с начала файла

+: открыть файл для чтения / записи. Существующие данные в файле сохраняются. Указатель файла начинается в конце файла. Создает новый файл, если файл не существует

A: Открыть файл только для записи. Существующие данные в файле сохраняются. Указатель файла начинается в конце файла. Создает новый файл, если файл не существует


Ответ 2:

В режиме r + текстовые файлы открываются как для чтения, так и для записи.

Этот режим не удаляет содержимое файла.

Также, если файл не существует, новый файл не создается.

В режиме + текстовые файлы добавляются. В этом режиме файлы могут быть прочитаны или записаны.

Если файл не существует, создается новый файл.

начальная позиция файла для чтения находится в файле, но всякий раз, когда что-то записывается в файл в режиме +, оно добавляется к текущему концу файла.

Запись в файл в режиме + и режиме r + имеет различие.

В режиме r + поток находится в текущей позиции файла, поэтому данные в файле могут быть перезаписаны при выполнении записи в режиме r +

Тогда как в режиме «+» записываемые данные всегда добавляются в текущий конец файла.

Запустите следующие коды, и различия станут яснее.

#include 
  
пустая функция()
{
    FILE * fp;
    char ch;
    // Открыть файл в режиме r +
    fp = fopen ("INPUT.txt", "r +"); //INPUT.txt содержит "Hello world!"
fprintf (fp, «Безумный мир!»); //INPUT.txt теперь содержит "Mad World! D!"
   
    
    
    // поэтому в основном данные записываются из начальной позиции файла (которая является началом файла для режима r +)

    fclose (FP);
}

И,

#include 
  
пустая функция()
{
    FILE * fp;
    char ch;
    // Открыть файл в режиме +
    fp = fopen ("INPUT.txt", "a +"); //INPUT.txt содержит "Hello world!"
fprintf (fp, «Безумный мир!»); //INPUT.txt теперь содержит «Hello world! Mad World!»
   
    
    
    // поэтому в основном данные добавляются в текущую конечную позицию файла
    
    fclose (FP);
}