我正在尝试使用strtok()将信息存储到我的结构中。我的代码看起来像这样
char *tempType = NULL, name[100], fileString[100];
int *tempItems = NULL, *tempCost = NULL;
FILE *infile = NULL;
ItemType myVector;
infile = fopen ("grocery_list.txt", "r");
while (!feof (infile))
{
fscanf (infile, "%s", &fileString);
tempType = strtok (fileString, ":");
tempCost = (int *) strtok (NULL, ":");
tempItems = (int *) strtok (NULL,":");
myVector.type[num_items] = tempType;
myVector.cost[num_items] = tempCost;
myVector.items[num_items] = tempItems;
num_items++;
}
每次我运行它,myVector.type中的所有值都变成“樱桃”,我不知道为什么。我的infile: 苹果:5:1 乳:3:2 面包:3:1 糖果:10:1 奶酪:5:6 桔子:4:2 樱桃:3:2
答案 0 :(得分:1)
函数strtok返回一个指针,每次执行while循环都会覆盖此指针。所以最后所有数组条目都指向相同的内存地址。你需要复制字符串strtok返回。