我有简单的档案格式。
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
",i);
pairs[i].name= tempVal;
printf("name at pos %i is %s
",i, pairs[i].name);
tempVal = strtok(NULL,"|");
pairs[i].value= tempVal;
printf("value at pos %i is %s
",i, pairs[i].value);
++i;
}
fclose(file);
}
而每张印本都印成正文,然后,我尝试用这一文字印刷阵列。
int j
for(j = 0; j < 3; j++)
{
printf("ENTRY# %iNAME:%sVALUE:%s
",j,pairs[j].name, pairs[j].value);
}
劳教是一种微薄的杂乱,尝试了带有密码区块的餐,但可能无法做到。 然而,我很想知道,为什么在整整段期间,它显示了正确的东西,但在整段之后,它显示了所有三个有相同名称的阵列(第三个条目的价值是正确的,而第一个和第二个条目的价值是,价值领域含有第三个条目正确价值的一半)。
感谢!