我有一些麻烦用链表传递一个.csv文件的信息,一个struct传递信息通过文件的.csv一个struct ...C语言:使用链表
的文件就像:
1,3.234,hello,f
3,4.2432,worldkind,o
.
.
.
我的C计划:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 50
typedef struct TP
{
int key;
//data
int atomnum;
float massnum;
char nome[MAX+1];
char sym[MAX+1];
struct tableper *nseg;
struct tableper *nant;
}tp;
tp* putmemory(tp *dbase1) //function to put data to struct
{
FILE *fp1;
char *token,ch,temp[MAX];
int *tokenint,i,aux[MAX],in=-1,flag=0;
char BUFFER[MAX],*aux2;
tp *nv;
if ((fp1 = fopen("TabelaPeriodica.csv","r")) == NULL)
printf("File could not be opened \n");
while(!feof(fp1))
{
while((ch=fgetc(fp1)) != '\r')
{
temp[++in]=ch;
if(ch == ',')
{
nv->key = ++i;
token = strtok(temp[++i],",");
nv->atomnum = token;
token = strtok(NULL,",");
nv->massnum = atof(token);
token = strtok(NULL,",");
strcpy(nv->nome,token);
token = strtok(NULL,",");
strcpy(nv->sym,token);
free(nv);
}
}
}
}
int main()
{
tp *dbase1;
putmemory(dbase1);
return 0;
}
我的问题是:
- 通过字符的向量串
- 的向量读每一行,并在结构体保存
- 每次迭代节省NV(new_node)使用链表
欢迎堆栈溢出:) – pmg 2011-12-25 10:53:55
'而((CH =龟etc(FP1))!= '\ r')'只适用于Windows。我建议你用'while((ch = fgetc(fp1))!='\ n')'代替它,它在Windows和所有其他操作系统上都能很好地工作。 – pmg 2011-12-25 10:59:04
什么是struct tableper?这是什么部分应该是基于链表的? – Dave 2011-12-25 12:13:24