我有一个这样格式化的简单文件
NAME|VALUE
NAME|VALUE
NAME|VALUE
我正在尝试将它们读入,并将它们存储在结构数组中,结构是这样的
struct data
{
char* name;
char* value;
};
现在,我知道数组的大小为 3,所以我这样做了:
struct data pairs[3];
这是我的代码,因为我试图从文件中读取它:
char *tempVal;
int i =0;
if(file != NULL)
{
char curLine [128];
while(fgets(curLine, sizeof curLine, stockFile) != NULL)
{
tempVal = strtok(curLine,"|");
printf("i:%i\n",i);
pairs[i].name= tempVal;
printf("name at pos %i is %s\n",i, pairs[i].name);
tempVal = strtok(NULL,"|");
pairs[i].value= tempVal;
printf("value at pos %i is %s\n",i, pairs[i].value);
++i;
}
fclose(file);
}
并且每个 printf 语句都会打印正确的东西,然后我尝试用这个打印数组
int j
for(j = 0; j < 3; j++)
{
printf("ENTRY# %i\NAME:%s\VALUE:%s\n\n",j,pairs[j].name, pairs[j].value);
}
抱歉,缩进有点奇怪,尝试弄乱代码块但不能让它变得非常完美。但是,我想知道为什么它在while循环中显示正确的东西,但是在它完成后,for循环显示所有三个具有相同名称的数组条目(第三个条目的值是正确的,但是对于第一个和第二个条目,值字段包含第三个条目正确值的一半)
谢谢!