我已经使用了很多这方面的知识,但我想知道一件事。我有一个.csv
文件,我需要阅读,传递给链接列表struct
。文件的行不具有相同的大小。使用fgets读取一个.CSV文件
我想用fgets()
来读取每一行,然后使用strtok
通过“,”获取信息并传递到struct
。
我正在使用LINUX。
typedef struct nodo
{
int row1;
char row2;
int row3;
struct nodo *next;
struct nodo *nant;
}nodo;
nodo* insert_last(nodo* base1, nodo* nv)
{
if(base1 == NULL)
base1 =nv;
base1->next = NULL;
while(base1->next != NULL)
base1 = base1->next;
base1->next = nv;
nv->nant = base1;
nv->next = NULL;
}
nodo* put2memory(nodo *base1)
{
nodo *nv;
FILE *fp1=fopen(xxx,"r");
char *tok;
while(fgets((buffer, sizeof(buffer),fp1) != NULL))
{
nv = (nodo*) malloc (sizeof(nodo));
nv->next=NULL;
tok = strtok(buffer,",");
nv->row1=tok;
tok = strtok(NULL,",");
nv->row2=tok;
tok = strtok(NULL,",");
nv->row3=tok;
insert_last(base1,nv);
}
free(nv);
}
int main()
{
nodo *base1;
put2memory(base1);
return 0;
}
我在想这样做,但我回来了“我的朋友”分段错误!
SYNTAX FILE:
123,ABC,23 23,d,444 。 。 。
在inser_last中,您使用的是base1和nv指针,但是您已将函数声明为x和y! – Neo 2011-12-25 19:57:08
你能编译这个程序吗?! – Neo 2011-12-25 19:59:27
no..my bad .. nodo * insert_last(nodo * base1,nodo * nv) – joaopfsilva 2011-12-25 22:10:56