У меня проблема с чтением из файла данных CSV в узел для бинарного дерева поиска в C. Кажется, что ни одна из данных на самом деле не читается в структуру.Код, который я использую сейчас, просто пытается прочитать одну строку данных из файла CSV, прежде чем я смогу масштабировать его, чтобы прочитать все это, но даже с этим я не получаю результаты.Я знаю, что в этом коде, вероятно, много крупных проблем, так как я не очень хорошо разбираюсь в языке, но любая оценка будет полезна.
typedef struct{
struct bst_t *left;
struct bst_t *right;
data_t data;
} bst_t;
Вот моя функция чтения
void readdata(bst_t node){
while(
scanf("%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],
%[^,],%[^,],%[^,],%[^,] ,[^,],%[^,],%[^,] ... ) == 14);
}
Вот моя функция печати
void printdata(bst_t node){
printf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s \n"...);
}
однако мой вывод выглядит просто:
-bash-4.1$ print
,,,,,,,,,,.,(@,,▒
Еще одна дополнительная проблема, с которой мне еще предстоит столкнуться, заключается в том, что некоторые данные в файле будут иметьзапятые в записи, как бы я "игнорировал" эти запятые, чтобы они отображались как данные, а не как разделитель в файле?
Еще раз, любая помощь будет очень признательна.
РЕДАКТИРОВАТЬ: Здесь я вызываю функции: (т.е. основной)
int main(int argc, char *argv[]) {
bst_t node;
readdata(*node);
printdata(node);
return 0;
}
Новый код компилятора
print.c: In function 'main':
print.c:37: error: invalid type argument of 'unary *' (have 'bst_t')
print.c: In function 'readdata':
print.c:56: error: request for member 'node' in something not a structure or union
Вот полный код:
#include <stdlib.h>
#include <stdio.h>
#define MAXSTRING 128
typedef struct{
struct bst_t *left;
struct bst_t *right;
struct data_t data;
} bst_t;
void readdata(bst_t *node);
void printdata(bst_t node);
int main(int argc, char *argv[]) {
bst_t node;
readdata(&node);
printdata(node);
return 0;
}
void readdata(bst_t *node){
while(
scanf("%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,] \n",...) == 14)
}