c语言 把文件的内容读入到字符串中

结构体是这样的:
struct Car{
char area;
char number[6];
unsigned long chnum;
string owner;
string brand;
} *LNCar;
txt文件是这样的:
A 12345 张三 NISSAN
B A2568 李华 audi
C 25ZXD 小明 CHERRY
怎样将txt中文件读入到结构体中,其中结构体中的chnum不赋值,求大神啊

问题一:C语言里面没有string....需要定义为字符数组
问题二:要读到结构体,你这个结构体里面少一个指向下一个的指针,这样才能构成链表。
struct Car
{
char area;
char number[6];
unsigned long chnum;
char owner[10];
char brand[10];
struct Car *next;
} *LNCar;

txt文件中间隔都用\t,然后读取到结构体的代码如下:
/*fp 是程序开始定义的文件指针*/
FILE *fp;
int Biaozhi=0;
struct Car *p1=NULL,*p2=NULL,*p3=NULL;
p1=(struct Car *)malloc(sizeof(struct Car)); /*给结构指针申请空间*/
p2=(struct Car *)malloc(sizeof(struct Car));
while(fscanf(fp,"%c\t%s\t%s\t%s\t",&p1->area,&p1->number,&p1->ower,&p1->brand)!=EOF)
{
if(Biaozhi==0) /*读取第一个的时候要付给LNCar*/
{
Biaozhi=1;
LNCar=p1;
p2=p1;
LNCar->next=NULL;
p1=(struct Car *)malloc(sizeof(struct Car));
}
else
{
p2->next=p1;
p2=p1;
p2->next=NULL;
p1=(struct Car *)malloc(sizeof(struct Car));
}
}

经过上面的代码读取后,txt文件内容就读取到LNCar为头的链表中了。追问

这个是一小部分,如果是大的文件呢,每次只读一部分,做堆排序,之后再做归并的外部排序,我需要怎么做才能控制每次读取的数量,以及之后读取时能继续之前读取,谢谢

追答

可以控制读取的行数啊;也可以根据读取出来的值来判断,方法是多种多样的。
假如要读取NUM1和NUM2之间的行数
int i=0; /*来表示行数*/
int NUM1=20;/*这个数值代表要读取的行数*/
int NUM1=50;
for(i=0;iarea,&p1->number,&p1->ower,&p1->brand)!=EOF)
{
if(Biaozhi==0) /*读取第一个的时候要付给LNCar*/
{
Biaozhi=1;
LNCar=p1;
p2=p1;
LNCar->next=NULL;
p1=(struct Car *)malloc(sizeof(struct Car));
}
else
{
p2->next=p1;
p2=p1;
p2->next=NULL;
p1=(struct Car *)malloc(sizeof(struct Car));
}
i++;
if(i==NUM2)
break; /*读取到NUM2行就停止读取*/
}

温馨提示:答案为网友推荐,仅供参考
相似回答