- 时刻注意文件权限;
- 时刻注意文件指针;
- 时刻至于接收文件内容的指针指向。
#include<stdio.h>//悲剧在2点,if后的return没加{},提前返回。接收文件用的
#include<stdlib.h>//指针指向NULL,执行错误。
typedef struct stu{
int value;
int number;
struct stu *next;
}Stu,*sp;
void main()
{
Stu a[2]={{10,1,NULL},{1,2,NULL}};
Stu b[2];
a[0].next=&a[1];
sp p=&a[0];
printf("%d%d%d\n",p->value,p->number,p->next);
FILE *fp=fopen("/home/lifulin/songshiqi1","rt+");
if(fp==NULL)
{
printf("dakaishibai\n");
return;
}
rewind(fp);//链表的读写测试完成。
fwrite(p,sizeof(Stu),2,fp);
sp q=&b[0];
rewind(fp);
fread(q,sizeof(Stu),2,fp);
printf("%d%d%d%d\n",q->value,q->number,q->next,(q+1)->value);
q=q->next;
printf("%d\n",q->value);
/* char ch[10]="hello";
char *p1=ch;
char chr='a';
fputc(chr,fp);
fputc('c',fp);
fputs(ch,fp);
fwrite(p1,sizeof(ch),1,fp);//认定的sizeof(ch)是10,把乱码也打进去了。*/
/* fwrite(p,sizeof(struct stu),2,fp);//结构体数组的读写验证正确,下面
sp p1=&b[0]; //是链表的读写。
rewind(fp);
fread(p1,sizeof(struct stu),2,fp);
printf("%d\n",(p1+1)->value);
*/
/* fprintf(fp,"%d\n",p->value);
// sp q=&a[1]; //q取到NULL不行,无法给值,要具体指向。malloc也可以。
sp q=(sp)malloc(sizeof(Stu));
rewind(fp);
fscanf(fp,"%d\n",&q->value);
printf("%d\n",q->value);*/
fclose(fp);
}
网友评论