我在使用时遇到问题strtok,我不知道是问题strtok出在哪里还是其他原因。
我有一个 .txt 文件,其中包含如下数据:
sometextdada;othertextdata
yetmoredata;andmoredata
读取的数据是以struct这种方式定义的存储:
typedef struct team{
char *name;
char *teamPlace;
}Team;
如果我这样做:
char buffer[100];
Team eq;
/*Read first line*/
fgets(buffer, 100, equipas)!= NULL);
eq.name= strtok(buffer,";\n");
eq.teamPlace= strtok (NULL,";\n");
printf("%s %s\n", eq.name,eq.teamPlace);
我可以看到它按strtok预期工作并存储sometextdada在eq.nameothertextdataeq.teamPlace
现在我想printf用一个添加eq到以这种方式定义的链表的函数替换它:
typedef struct nodeTeam{
int numberOfTeams;
Team team;
struct nodeTeam *next;
struct nodeTeam *prev;
}NodeTeam;
所以我替换printf了addNodeTeamsSorted(headEquipas,&tailEquipas,eq);
fgets(buffer, 100, equipas)!= NULL);
eq.name= strtok(buffer,";\n");
eq.teamPlace= strtok (NULL,";\n");
addNodeTeamsSorted(headEquipas,&tailEquipas,eq);
现在,如果我打印我的链表,我可以看到我的节点已添加但name包含teamPlace垃圾字符。但如果我这样做:
fgets(buffer, 100, equipas)!= NULL);
eq.name= "test";
eq.teamPlace= "test2";
addNodeTeamsSorted(headEquipas,&tailEquipas,eq);
我可以看到一切都按预期工作,这让我认为问题出char在我的struct
我究竟做错了什么?