文件读写

2016-10-23  本文已影响13人  b6aed1af4328
  1. 时刻注意文件权限;
  2. 时刻注意文件指针;
  3. 时刻至于接收文件内容的指针指向。
#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);
}
上一篇 下一篇

猜你喜欢

热点阅读