Member 13025856 Ответов: 2

Команды обработки файлов в C?


2 (похожие) вопроса:

1. Откуда вы знаете, какую команду использовать при написании программ обработки файлов на языке Си? Например, в чем разница между различными командами обработки файлов в C, такими как: fopen или openfil?


2. Есть ли правила после объявления файл? Это, вероятно, очень простой вопрос для любого, кто знает C, но для меня все, что я вижу везде, - это разные формулы везде. Есть ли 1, 2, 3-ступенчатый иш? Есть ли способ подойти к этому для новичка, способ мышления?


Добавлено: (это одно упражнение в старом экзамене, которое я пытаюсь понять). Национальная организация хочет перечислить всех слонов в Африке по их возрасту. Все они зарегистрированы по ID, возрасту и площади в elephants.dat. Напишите код и считайте каждого слона в массив, а затем отсортируйте их по возрасту.

Что я уже пробовал:

Читаю все, что можно прочитать в google + материалах от моего учителя. Я не могу найти красную нить.

2 Ответов

Рейтинг:
2

CPallini

функции fopen[^] является ли C функция, используемая для открытия файла. Ваш OS однако он может предоставлять и другие функции (например, Windows обеспечивает, например, CreateFile функция). Если портативность имеет значение, используйте fopen.

То ФАЙЛ[^] объект объявлен в stdio.h заголовочный файл. Обычно вы объявляете указатель на него, например

FILE * fp;

а затем использовать такой указатель для I/O задачи в файле, например
fp = fopen("foo.txt", "w");
if ( fp )
{
  fprintf(fp, "fooooooo!\n");
  fclose(fp);
}


Рейтинг:
0

Jochen Arndt

1. Нет общего правила, какой тип (файловый дескриптор или потоковый) должен использоваться. Почти во всех случаях можно использовать и то, и другое, и решать вам. Краткий обзор различий:
Библиотека GNU C: потоки и файловые дескрипторы[^]

Я бы использовал потоковые функции в целом и функции на основе дескрипторов только в том случае, если операции не могут быть выполнены с потоками.

2.
Мне не совсем ясно, что вы хотите знать.
Но общие правила таковы


  • Откройте файл и проверьте его на успех
  • Выполнение операций ввода-вывода
  • Закрыть файл

Обычный скелет:
#include <stdio.h>
#include <errno.h>

int someFunc(const char *fileName)
{
    int fileErr = 0;
    FILE *file = NULL;

    file = fopen(fileName, mode);
    if (NULL == file)
    {
        fileErr = errno;
        /* Optionally report error here */
    }
    else
    {
        /* Perform IO here */
        fclose(file);
    }
    return fileErr;
}