我在使用时遇到问题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.name
othertextdata
eq.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
我究竟做错了什么?