1. камеры
  2. Аудио & Электроника автомобиля
  3. Главная Аудио
  4. Личная Аудио
  5. телевизоры
  6. Умный дом
  >> Россия Электронный Технологии >  >> Умный дом >> Умная жизнь

Как читать CSV-файл в C

Многие программные продукты, работающие с числами и вычислениями, имеют возможность выводить данные в файл со значениями, разделенными запятыми (CSV). Этот формат может быть эффективным способом передачи данных между различными программами, поскольку он легко читается и им довольно легко манипулировать. Многим программам на C, работающим с данными, в какой-то момент, вероятно, придется читать из CSV-файла.

Шаг 1

Обратитесь к документации программы, предоставляющей CSV-файл. Определите количество полей в каждой строке, а также формат каждого поля. Например, если программа предоставляет CSV-файл со следующими данными:1, "тест", 34,5. Вы должны пометить три поля:одно целое, одну строку и одно число с плавающей запятой.

Шаг 2

Создайте структуру, содержащую элемент данных для каждого поля, указанного в CSV. Используя предоставленный пример строки 1, «тест», 34,5, вам понадобится следующая структура:struct data { int col1; символ *col2; плавающий столбец3; };

Шаг 3

Создайте в своей программе метод, который будет обрабатывать чтение CSV-файла. Это должно быть доступно для остальной части вашей программы и, вероятно, потребуется работать с общими структурами данных, чтобы другие методы могли получить доступ к прочитанным данным. Передайте параметр по ссылке, чтобы устранить необходимость в возвращаемом значении. . Примером прототипа функции может быть:void ParseCSV( char *filename, data&input );

Шаг 4

Включите стандартный заголовок ввода-вывода, используя следующий код:#include Добавьте этот код в начало исходного файла, который будет считывать CSV.

Шаг 5

Включите библиотеку строк, чтобы разрешить манипулирование данными CSV, используя следующий код:#include Добавьте этот код в начало исходного файла, который будет считывать CSV.

Шаг 6

Создайте файловый объект, который будет считывать данные, используя следующий код:FILE * pInput;

Шаг 7

Создайте буфер символов, достаточно большой, чтобы вместить одну строку файла за раз. Из-за ограничений языка самый простой способ сделать это — объявить массив символов достаточно большого размера, например:#define BUFFER_SIZE 1024

символ buf[BUFFER_SIZE];

Шаг 8

Откройте файл с помощью следующего кода и назначьте его ранее созданному объекту FILE:pInput =fopen("filename," "r")

Шаг 9

Прочитайте строку файла, используя следующий код:

fgets(buf, sizeof(buf), pInput)

Шаг 10

Разберите CSV с помощью функции «strtok». Создайте новую строку символов, указывающую на токены, и инициализируйте ее данными из строки, прочитанной выше:char *tok =strtok(buf, ",")

Шаг 11

Преобразуйте полученный токен в соответствующие данные. Используя строку примера:1, "test", 3.45 преобразуйте данные, содержащиеся в "tok", в целое число, используя следующий код:row.col1 =atoi(tok);

Шаг 12

При последующем чтении из той же строки передайте «strtok» параметр NULL вместо строки буфера, которую вы читали ранее:tok =strtok(NULL, ",") Затем преобразуйте токен в соответствующий тип данных. Используя пример строки 1, "test", 3.45 Код синтаксического анализа для одной строки будет таким:char *tok =strtok(buf, ","); row.col1 =atoi(ток); tok =strtok(NULL, ","); строка.col2 =ток; tok =strtok(NULL, ","); row.col3 =atof(ток);

Шаг 13

Сделайте это для всех записей в каждой строке CSV. Функция «strtok» будет продолжать предоставлять данные между значениями запятой, пока не закончатся данные в буфере, после чего она вернет NULL. Это будет означать, что вы закончили со строкой.

Совет

Инкапсулируйте преобразование данных в другой метод, чтобы сделать код более читабельным. Метод «fgets» вернет NULL, когда файл будет полностью прочитан. Используйте это в цикле while для обхода всего файла.

Предупреждение

Функция "fopen" может вернуть NULL, если произошла ошибка - обязательно проверьте файл перед ее использованием. В некоторых случаях предоставленные токены могут иметь не ожидаемый формат. Обязательно проверьте свои данные перед слепым преобразованием, проверяя распространенные значения ошибок (пустая строка, NULL и т. д.).


  1. Как конвертировать GPX файл
  2. Как импортировать файл CSV в BlackBerry
  3. Как читать AT &Amp; T файла
  4. Как создать POI CSV файл
  5. Как читать зашифрованные файлы