java读取文件中的数组中_从文件中读取并存储到结构数组中

我有一个简单的格式文件

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循环显示所有三个具有相同名称的数组条目(该值对于第三个条目是正确的但是对于第一个和第二个条目,值字段包含第三个条目的正确值的一半)

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值