• C标准I/O建立一个文件仓库


    实现了 增删改查 

    创建了一个结构体 保存 num name cout price

    代码

    #include<stdio.h>
    #include<string.h>
    #include<fcntl.h>
    #include<sys/mman.h>

    typedef struct
    {
    int num;
    char name[32];
    int count;
    int price;
    }GOOD;

    int main(int argc,char *argv[])
    {
    FILE *fp;
    GOOD good;
    fp=fopen(argv[1],"a+");
    if(NULL==fp)
    {
    perror("fopen1");
    return -1;
    }
    fclose(fp);
    fp=fopen(argv[1],"r+");
    if(NULL==fp)
    {
    perror("fopen2");
    return -1;
    }
    int n;
    printf("please input your select function ");
    printf("----1-------------store good ");
    printf("----2------------browse good ");
    printf("----3--------------seek good ");
    printf("----4-------------alter good ");
    printf("----5------------delete good ");
    printf("----6--------------rank good ");
    printf("----7------------exit system ");
    while(scanf("%d",&n)==1)
    {
    getchar();
    if(n==1)
    {
    printf("please input you want store good's num name count price ");
    scanf("%d%s%d%d",&good.num,good.name,&good.count,&good.price);
    fprintf(fp,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    printf("store success ");
    }
    else if(n==2)
    {
    int flag;
    rewind(fp);
    while(1)
    {
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    printf(" list above is all good ");
    break;
    }
    printf("%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    }
    else if(n==3)
    {
    char str[32];
    int find=0;
    int flag;
    rewind(fp);
    printf("please input you want seek good name ");
    scanf("%s",str);
    getchar();
    while(1)
    {
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    if(find==0)
    printf(" I am sorry not have you want seek good ");
    else
    printf(" above list is you want seek all good ");
    break;
    }
    if(strcmp(str,good.name)==0)
    {
    find++;
    printf(" %5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    }
    }
    else if(n==4)
    {
    int number;
    int flag;
    rewind(fp);
    printf("please input you want alter good's num ");
    scanf("%d",&number);
    getchar();
    while(1)
    {
    int place=(int)ftell(fp);
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    printf("not have fine you want alter num ");
    break;
    }
    if(number==good.num)
    {
    printf("please input you altered'information ");
    scanf("%d%s%d%d",&good.num,good.name,&good.count,&good.price);
    fseek(fp,place,SEEK_SET);
    fprintf(fp,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    printf("alter success! ");
    break;
    }
    }

    }
    else if(n==5)
    {
    int success=0;
    int number;
    int place_1;
    int flag;
    rewind(fp);
    printf("please input you want delete good's num ");
    scanf("%d",&number);
    getchar();
    while(1)
    {
    int place=(int)ftell(fp);
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    //printf("not have fine you want delete num ");
    fseek(fp,place_1,SEEK_SET);
    fprintf(fp,"%c",EOF);
    printf("delete success !");
    break;
    }
    if(success)
    {
    fseek(fp,place_1,SEEK_SET);
    fprintf(fp,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    if(number==good.num)
    {
    success=1;
    }
    place_1=place;
    }

    }
    else if(n==6)
    {

    }
    else if(n==7)
    {
    fclose(fp);
    printf("you exit success welcome come again ");
    break;
    }
    else
    {
    printf("your input error please input again ");
    }
    printf("please input your select function ");
    printf("----1-------------store good ");
    printf("----2------------browse good ");
    printf("----3--------------seek good ");
    printf("----4-------------alter good ");
    printf("----5------------delete good ");
    printf("----6--------------rank good ");
    printf("----7------------exit system ");

    }
    return 0;
    }

    更加完善之后的代码

    #include<stdio.h>
    #include<string.h>
    #include<fcntl.h>
    #include<sys/mman.h>

    typedef struct
    {
    int num;
    char name[32];
    int count;
    int price;
    }GOOD;

    int main(int argc,char *argv[])
    {
    FILE *fp,*fp1;
    GOOD good;
    fp=fopen(argv[1],"a+");
    if(NULL==fp)
    {
    perror("fopen1");
    return -1;
    }
    fclose(fp);
    fp=fopen(argv[1],"r+");
    if(NULL==fp)
    {
    perror("fopen2");
    return -1;
    }
    int n;
    printf("please input your select function ");
    printf("----1-------------store good ");
    printf("----2------------browse good ");
    printf("----3--------------seek good ");
    printf("----4-------------alter good ");
    printf("----5------------delete good ");
    printf("----6--------------rank good ");
    printf("----7------------exit system ");
    while(scanf("%d",&n)==1)
    {
    getchar();
    if(n==1)
    {
    rewind(fp);
    int flag,success,flag_1;
    GOOD in_good;
    success=0;
    flag_1=0;
    fp1=fopen("./store_fu.txt","w+");
    if(NULL==fp1)
    {
    perror("fopen5");
    return 0;
    }
    printf("please input you want store good's information num name count price ");
    scanf("%d%s%d%d",&in_good.num,in_good.name,&in_good.count,&in_good.price);
    getchar();
    while(1)
    {
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    if(success==0)
    {
    fprintf(fp,"%5d%16s%5d%5d ",in_good.num,in_good.name,in_good.count,in_good.price);
    fclose(fp1);
    break;
    }
    fclose(fp);
    fp=fopen(argv[1],"w+");
    if(NULL==fp)
    {
    perror("fopen4");
    return -1;
    }
    rewind(fp1);
    while(1)
    {
    flag=fscanf(fp1,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    fclose(fp1);
    break;
    }
    fprintf(fp,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    break;
    }
    if(in_good.num<good.num&&flag_1==0)
    { success=1;
    flag_1=1;
    fprintf(fp1,"%5d%16s%5d%5d ",in_good.num,in_good.name,in_good.count,in_good.price);
    }
    fprintf(fp1,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    printf("store success ");
    }
    else if(n==2)
    {
    int flag;
    rewind(fp);
    while(1)
    {
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    printf(" list above is all good ");
    break;
    }
    printf("%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    }
    else if(n==3)
    {
    char str[32];
    int find=0;
    int flag;
    rewind(fp);
    printf("please input you want seek good name ");
    scanf("%s",str);
    getchar();
    while(1)
    {
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    if(find==0)
    printf(" I am sorry not have you want seek good ");
    else
    printf(" above list is you want seek all good ");
    break;
    }
    if(strcmp(str,good.name)==0)
    {
    find++;
    printf(" %5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    }
    }
    else if(n==4)
    {
    int number;
    int flag;
    rewind(fp);
    printf("please input you want alter good's num ");
    scanf("%d",&number);
    getchar();
    while(1)
    {
    int place=(int)ftell(fp);
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    printf("not have find you want alter num ");
    break;
    }
    if(number==good.num)
    {
    printf("please input you altered'information ");
    fprintf(stdout,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    scanf("%d%s%d%d",&good.num,good.name,&good.count,&good.price);
    fseek(fp,place,SEEK_SET);
    fprintf(fp,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    printf("alter success! ");
    break;
    }
    }

    }
    else if(n==5)
    {
    int success=0;
    int number;
    int flag;
    fp1=fopen("./store_fu.txt","w+");
    if(NULL==fp1)
    {
    perror("fopen3");
    return -1;
    }
    rewind(fp);
    printf("please input you want delete good's num ");
    scanf("%d",&number);
    getchar();
    while(1)
    {
    flag=fscanf(fp,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    {
    fclose(fp);
    fp=fopen(argv[1],"w+");
    if(NULL==fp)
    {
    perror("fopen4");
    return -1;
    }
    rewind(fp1);
    while(1)
    {
    flag=fscanf(fp1,"%d%s%d%d ",&good.num,good.name,&good.count,&good.price);
    if(-1==flag||0==flag)
    { if(success)
    {
    printf("delete success! ");
    }
    else
    {
    printf("not find you want delete num ");
    }
    fclose(fp1);
    break;
    }
    fprintf(fp,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    break;
    }
    if(number==good.num)
    {
    success=1;
    }
    else
    {
    fprintf(fp1,"%5d%16s%5d%5d ",good.num,good.name,good.count,good.price);
    }
    }

    }
    else if(n==7)
    {
    fclose(fp);
    printf("you exit success welcome come again ");
    break;
    }
    else
    {
    printf("your input error please input again ");
    }
    printf("please input your select function ");
    printf("----1-------------store good ");
    printf("----2------------browse good ");
    printf("----3--------------seek good ");
    printf("----4-------------alter good ");
    printf("----5------------delete good ");
    printf("----6--------------rank good ");
    printf("----7------------exit system ");
    }
    return 0;
    }

  • 相关阅读:
    OCP-1Z0-052-V8.02-116题
    OCP-1Z0-052-V8.02-6题
    OCP-1Z0-052-V8.02-5题
    使用rman恢复控制文件
    Matlab-质点的运动
    Matlab中checkerboard-创建棋盘图像(二)
    OCP-1Z0-052-V8.02-4题
    OCP-1Z0-052-V8.02-3题
    Matlab中checkerboard-创建棋盘图像(一)
    OCP-1Z0-052-V8.02-1题
  • 原文地址:https://www.cnblogs.com/liudehao/p/5654622.html
Copyright © 2020-2023  润新知