Ищите способ прочитать матрицу 8 * 8 из файла CSV и сохранить ее - PullRequest
0 голосов
/ 19 декабря 2011

Я новичок в программировании на C и ищу способ прочитать матрицу 8 * 8 из файла CSV и сохранить ее. Кто-нибудь может помочь?

Ответы [ 3 ]

2 голосов
/ 19 декабря 2011

Я вижу, вы упомянули матрицу 8 X 8.Так как вы знаете размерность, вы можете статически выделить 2d массив.В противном случае вам, возможно, придется проанализировать файл один раз, чтобы найти n X m, а затем динамически распределить память соответственно (если вы выделяете память динамически, не забудьте освободить ее!).

Ваш базовый алгоритм должен выглядеть примерно так:

initialize _matrix_
initialize _row_ and _column_ to 0

open the file 
read a line
while the currently read line is not an empty line  
    split the line using comma as a delimiter
    initialize the _column_ to zero
    for all the elements (in the output of split)
        add the element to _matrix_[_row_][_column_]
        increment the _column_ by one
    increment the _row_ by one 
    read the next line
close the file

Вам следует позаботиться о таких (ошибочных) условиях, как следующие:

  • theCSV-файл не существует (открыть не удается)
    • если матрица динамически размещается, то освободить его перед выходом!
  • CSV-файл пуст (ноль строк)
  • файл csv содержит строки не в формате csv (ошибка синтаксического анализа)
  • содержимое файла какого типа?char или int?какой диапазон?(ошибка типа данных)
  • что, если имеется более 8 х 8 элементов?игнорировать их?

Пожалуйста, используйте стандартные библиотеки / строковые функции, как указано выше @Dave, и попробуйте алгоритм, который я упомянул в этом посте.

1 голос
/ 20 декабря 2011

ABNF можно найти здесь.

С Bison вы можете использовать эту грамматику для разбора.

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

1 голос
/ 19 декабря 2011

Посмотрите на strtok fgets и ato(f/i) и fopen для начала.Общая идея заключается в том, что вы читаете в файле, разделяя его запятыми, а затем анализируете подстроки в нужной форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...