struct DETAIL
{
char data[12+1];
struct DETAIL* next;
};
int main()
{
int ret = 0;
FILE *fp = fopen("linked","w+");
struct DETAIL *ptr = NULL;
struct DETAIL *stTmp = NULL;
int i = 0;
stTmp = (struct DETAIL*)malloc(sizeof(struct DETAIL));
ptr = (struct DETAIL*)malloc(sizeof(struct DETAIL));
for(i = 0; i<10; i++)
{
sprintf(stTmp->data,"%012d",i+1);
ptr->next = stTmp;
ret= fwrite((struct DETAIL *)&(ptr->next),1,sizeof(struct DETAIL),fp));
printf("data[%d]:%s\r\n",i,ptr->next->data);
ptr = ptr->next;
}
}
面临的问题是eclipse luna,我想用链接来编写数据 我希望在文件中写入10条记录,同时写入文件中的伪数据。但数据正确打印。你的帮助会让我在编程方面更加强大。感谢。
答案 0 :(得分:0)
ptr->next
是指向struct的指针。在C中,你永远不应该明确地转换为void *
,因为它会掩盖编译器警告。要修复代码,您只需编写:
ret= fwrite(ptr->next,1,sizeof(struct DETAIL),fp);
但是将指针存储到文件中并没有多大意义...仅存储数据部分会更好恕我直言:
ret= fwrite(ptr->next->data,1,sizeof(stTmp->data),fp);