나는 이것에 관해 이미 많이 봤지만 한 가지를 알고 싶다. 내가 읽어야하는 .csv
파일이 있습니다. 연결된 목록이있는 struct
으로 전달하십시오. 파일 줄이 같은 크기가 아닙니다.fgets를 사용하여 .CSV 파일을 읽는 방법
각 줄을 읽으려면 fgets()
을 사용하고 strtok
을 사용하여 ","을 통해 정보를 얻은 다음 struct
으로 전달하십시오.
나는 리눅스를 사용하고 있습니다.
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;
}
나는 이렇게 생각하고 있습니다.하지만 "내 친구"세분화 오류가 반환됩니다.
구문 FILE :
123 ABC 23 23 D 444 . . .
inser_last에서 base1 및 nv 포인터를 사용하지만 함수에 매개 변수를 x 및 y로 선언했습니다! – Neo
이 프로그램을 컴파일 할 수 있습니까?! – Neo
no.my bad .. nodo * insert_last (nodo * base1, nodo * nv) – joaopfsilva