我正在尝试将txt文件加载到内存中,但是不能正确排列 视频 - >客户端[续] .name =名称;
ps:txt客户端就像这样
txt:
1 name1
2 name2
3 name3
,代码是:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct Client
{
int number;
char *name;
};
struct Loan
{
int number;
Client *client;
};
void check_error(FILE *arquivo)
{
if(arquivo==NULL)
{
printf("Error to open file!");
exit(0);
}
}
void load_client(Loan *video)
{
FILE *arquivo;
arquivo=fopen("clientes.txt","rt");
check_error(arquivo);
int num,cont=0;
char name[30];
while(!feof(arquivo))
{
fscanf(arquivo,"%d %s " ,&num,&name);
video->client[cont].number=num;
video->client[cont].name=name; //this part give error!!
cont++;
}
for(int i=0;i<20;i++)
{
printf("%d %s\n",video->client[i].number, video->client[i].name);
}
fclose(arquivo);
}
int main()
{
Loan *video=(Loan*)malloc(20*sizeof(Loan));
video->client=(Client*)malloc(20*sizeof(Client));
video->client->name=(char*)malloc(20*sizeof(char));
load_client(video);
return 0;
}
请有人帮助我,
ps:抱歉我的英语!
答案 0 :(得分:0)
在main()
中,您使用以下行创建了20个客户端:
video->client=(Client*)malloc(20*sizeof(Client));
因此,下一行应为20个客户端名称分配内存。也就是说,以下行应该循环访问每个客户端作为client [i]:
video->client->name=(char*)malloc(20*sizeof(char));