首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

还是那个 C语言文件输入的有关问题

2012-04-23 
还是那个 C语言文件输入的问题写了个小程序,目的是:输入学号,姓名,性别.然后把它们写入“数据.txt”这个文件

还是那个 C语言文件输入的问题
写了个小程序,目的是:输入学号,姓名,性别.然后把它们写入“数据.txt”这个文件里面,
可是每次打开这个程序再输入数据时,以前写的数据都被清空了,
这是怎么回事?
要怎么改改才可以每次打开程序都不把以前写的数据清除掉,而是接着以前的数据写?

C/C++ code
#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>struct goo {     int Student_number;    char name[20];     char sex[10];  }; typedef struct node {     struct goo data;     struct node *link; }linklist,Node; void add(linklist*,FILE*); void main(){    FILE *fp;    linklist *head;    int i,n;    if((fp=fopen("数据.txt","w+"))==NULL)    {        printf("Cannot open!");        exit(1);    }    fprintf(fp,"学号\t\t\t姓名\t\t\t性别\n");    fprintf(fp,"-------------------------------------------\n");    head=(linklist*)malloc(sizeof(linklist));    head->link=NULL;    printf("请输入要输入的记录的条数:");    scanf("%d",&n);    for(i=1;i<=n;i++)        add(head,fp);    printf("\n");    fclose(fp);}void add(linklist* head,FILE *fp){    Node *p,*q;    int sn;    char n[20],s[10];    p=head;      //    while(p->link!=NULL)    {        p=p->link;    }    q=(Node*)malloc(sizeof(Node));    printf("请输入学号:");    scanf("%d",&sn);    q->data.Student_number=sn;     fprintf(fp,"%d\t\t",q->data.Student_number);    printf("请输入姓名:");    scanf("%s",&n);    strcpy(q->data.name,n);     fprintf(fp,"%s\t\t",q->data.name);//字符串是不可以直接复制的,要通过<string.h>下的函数    printf("请输入性别:");    scanf("%s",&s);        strcpy(q->data.sex,s);     fprintf(fp,"%s\n",q->data.sex);    q->link=p->link;    p->link=q;}


[解决办法]
if((fp=fopen("数据.txt","w+"))==NULL)
to
if((fp=fopen("数据.txt","a+"))==NULL)
[解决办法]
w是清空,没有则创建。
a+是读写追加。
[解决办法]
不要用W+ 啊 ,要用a+ 啊 w+ 每次打开会清空文件的, 建议楼主百度搜索一下fopen 里面有参数介绍,有写文件打开模式的哦~~~新人求分

热点排行