实现了 增删改查

创建了一个结构体 保存 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\n\n");
printf("----1-------------store good\n");
printf("----2------------browse good\n");
printf("----3--------------seek good\n");
printf("----4-------------alter good\n");
printf("----5------------delete good\n");
printf("----6--------------rank good\n");
printf("----7------------exit system\n");
while(scanf("%d",&n)==1)
{
getchar();
if(n==1)
{
printf("please input you want store good's num name count price\n");
scanf("%d%s%d%d",&good.num,good.name,&good.count,&good.price);
fprintf(fp,"%5d%16s%5d%5d\n",good.num,good.name,good.count,good.price);
printf("store success\n");
}
else if(n==2)
{
int flag;
rewind(fp);
while(1)
{
flag=fscanf(fp,"%d%s%d%d\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
printf("\nlist above is all good\n\n\n");
break;
}
printf("%5d%16s%5d%5d\n",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\n");
scanf("%s",str);
getchar();
while(1)
{
flag=fscanf(fp,"%d%s%d%d\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
if(find==0)
printf("\nI am sorry not have you want seek good\n\n\n");
else
printf("\nabove list is you want seek all good\n\n");
break;
}
if(strcmp(str,good.name)==0)
{
find++;
printf("\n%5d%16s%5d%5d\n",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\n");
scanf("%d",&number);
getchar();
while(1)
{
int place=(int)ftell(fp);
flag=fscanf(fp,"%d%s%d%d\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
printf("not have fine you want alter num\n");
break;
}
if(number==good.num)
{
printf("please input you altered'information\n");
scanf("%d%s%d%d",&good.num,good.name,&good.count,&good.price);
fseek(fp,place,SEEK_SET);
fprintf(fp,"%5d%16s%5d%5d\n",good.num,good.name,good.count,good.price);
printf("alter success!\n");
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\n");
scanf("%d",&number);
getchar();
while(1)
{
int place=(int)ftell(fp);
flag=fscanf(fp,"%d%s%d%d\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
//printf("not have fine you want delete num\n");
fseek(fp,place_1,SEEK_SET);
fprintf(fp,"%c",EOF);
printf("delete success\n!");
break;
}
if(success)
{
fseek(fp,place_1,SEEK_SET);
fprintf(fp,"%5d%16s%5d%5d\n",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\n");
break;
}
else
{
printf("your input error please input again\n\n");
}
printf("please input your select function\n\n");
printf("----1-------------store good\n");
printf("----2------------browse good\n");
printf("----3--------------seek good\n");
printf("----4-------------alter good\n");
printf("----5------------delete good\n");
printf("----6--------------rank good\n");
printf("----7------------exit system\n");

}
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\n\n");
printf("----1-------------store good\n");
printf("----2------------browse good\n");
printf("----3--------------seek good\n");
printf("----4-------------alter good\n");
printf("----5------------delete good\n");
printf("----6--------------rank good\n");
printf("----7------------exit system\n");
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\n");
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\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
if(success==0)
{
fprintf(fp,"%5d%16s%5d%5d\n",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\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
fclose(fp1);
break;
}
fprintf(fp,"%5d%16s%5d%5d\n",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\n",in_good.num,in_good.name,in_good.count,in_good.price);
}
fprintf(fp1,"%5d%16s%5d%5d\n",good.num,good.name,good.count,good.price);
}
printf("store success\n");
}
else if(n==2)
{
int flag;
rewind(fp);
while(1)
{
flag=fscanf(fp,"%d%s%d%d\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
printf("\nlist above is all good\n\n\n");
break;
}
printf("%5d%16s%5d%5d\n",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\n");
scanf("%s",str);
getchar();
while(1)
{
flag=fscanf(fp,"%d%s%d%d\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
if(find==0)
printf("\nI am sorry not have you want seek good\n\n\n");
else
printf("\nabove list is you want seek all good\n\n");
break;
}
if(strcmp(str,good.name)==0)
{
find++;
printf("\n%5d%16s%5d%5d\n",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\n");
scanf("%d",&number);
getchar();
while(1)
{
int place=(int)ftell(fp);
flag=fscanf(fp,"%d%s%d%d\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{
printf("not have find you want alter num\n");
break;
}
if(number==good.num)
{
printf("please input you altered'information\n");
fprintf(stdout,"%5d%16s%5d%5d\n",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\n",good.num,good.name,good.count,good.price);
printf("alter success!\n");
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\n");
scanf("%d",&number);
getchar();
while(1)
{
flag=fscanf(fp,"%d%s%d%d\n",&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\n",&good.num,good.name,&good.count,&good.price);
if(-1==flag||0==flag)
{ if(success)
{
printf("delete success!\n");
}
else
{
printf("not find you want delete num\n");
}
fclose(fp1);
break;
}
fprintf(fp,"%5d%16s%5d%5d\n",good.num,good.name,good.count,good.price);
}
break;
}
if(number==good.num)
{
success=1;
}
else
{
fprintf(fp1,"%5d%16s%5d%5d\n",good.num,good.name,good.count,good.price);
}
}

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

C标准I/O建立一个文件仓库的更多相关文章

  1. 在iMac上建立一个git仓库

    前沿:一般我们去git clone 的时候,数据直接指向了某某分支的最后一次提交.想想 我们每次提交的不同点都在哪,去 当前工程文件下找到 .git 文件夹,去下面自己看看吧 - .git - .co ...

  2. 【转载】在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间

    在windows下,一个文件有:创建时间.修改时间.访问时间.而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是 ...

  3. 如何用Docker建立一个Node.js的开发环境

      建立一个文件夹 用管理员身份打开powershell. 在文件夹下面运行npm init, 根据提示填入信息,以便产生一个package.json文件. 在文件中加入需要的dependencies ...

  4. vue+nodejs+express+mysql 建立一个在线网盘程序

    vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...

  5. time模块目录下自己建立一个名为log的文件夹

    使用python调用ping命令,然后在日志中记录ping的结果,用来监测网络连通情况. 代码: [python]from time import *from subprocess import *w ...

  6. 建立你的第一个 Git 仓库

    虽然 Git 确实是被许多重要软件选作版本控制工具,但是并不是仅能用于这些重要软件;它也能管理你购物清单(如果它们对你来说很重要的话,当然可以了!).你的配置文件.周报或日记.项目进展日志.甚至源代码 ...

  7. git学习笔记02-创建一个仓库提交一个文件-原来就是这么简单

    打开安装好的git bash,设置你的git信息  (这个随便写就行) 初始化一个Git仓库,分三步.(创建文件夹也可以手动创建,也可以命令行创建) 第一步,进到一个目录  cd e: 第二步,创建一 ...

  8. Git 系列(三):建立你的第一个 Git 仓库

    现在是时候学习怎样创建你自己的 Git 仓库了,还有怎样增加文件和完成提交. 在本系列前面的文章中,你已经学习了怎样作为一个最终用户与 Git 进行交互:你就像一个漫无目的的流浪者一样偶然发现了一个开 ...

  9. Protel99se教程一:建立一个数据库文件

    学习Protel99 SE的第一步,是建立一个DDB文件,也就是说,使用protel99se进行电路图和PCB设计,以及其它的数据,都存放在一个统一的DDB数据库中的 一.打开protel 99se后 ...

随机推荐

  1. android脚步---自动完成文本框

    自动完成文本框AutoCompleteTextView,当用户输入一定字符时,自动完成文本框会显示一个下拉菜单,供用户选择,设置一个Adapter,该Adapter中封装了AutoCompleteTe ...

  2. ListView下拉刷新、上拉载入更多之封装改进

    在Android中ListView下拉刷新.上拉载入更多示例一文中,Maxwin兄给出的控件比较强大,前面有详细介绍,但是有个不足就是,里面使用了一些资源文件,包括图片,String,layout,这 ...

  3. 基于js脚本的单机黄金点游戏

    题目描述 N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G( ...

  4. reactor 类库,基于事件编程

    https://github.com/reactor https://github.com/reactor/reactor-samples/ https://github.com/ReactiveX/ ...

  5. Windows Server 2012如果打开网页慢下载快的话

    原来Windows server 2012默认打开了ECN功能(貌似从Windows server  2008之后都默认打开),个人操作系统却没有打开,而办公室网络的确拥塞不小,造成了这种效果.好了, ...

  6. PAT (Advanced Level) 1005. Spell It Right (20)

    简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...

  7. astah* professional 6.9.0

    下载地址:http://members.change-vision.com/files/astah_professional/6_9_0 破解方法:按照Astah Professional 6.9后打 ...

  8. java数组的声明由几种方式

    数组的声明由几种方式: 1,String []a = new String[length];再赋值 a[0]=?;....... 2,new完就直接初始化: String []a = new Stri ...

  9. 一个不应该犯的错octave

    今天在完成Andrew NG的机器学习神经网络作业,在实现花费函数的时候,没有使用循环,直接向量计算.前面都想的挺好的,很快就想到了如何使用向量来计算,可是在扩展y的时候,犯了一个超级傻的错误. y是 ...

  10. wex5 实战 苹果左滑删除与长按编辑

    用了多年苹果,习惯了苹果的左滑删除与长按编辑,特别是短信什么的,很多安卓界面也采用了类似方式. 我的想法突如其来,用wex5也设计一个这样的功能,可以吗? 那句广告词,没有什么不可能. 呵呵. 一   ...