实现了 增删改查

创建了一个结构体 保存 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. led.c驱动框架2nd

    led.c: #include <linux/module.h> #include <linux/init.h> #include <linux/fs.h> ; v ...

  2. codeforces 665C Simple Strings

    相同的一段字母变一下就可以. #include<cstdio> #include<cstring> #include<cmath> #include<vect ...

  3. 如何把一个TXT文本文件按行数分割成多个文本文件

    2011-04-27 12:00:24|  分类: 默认分类 |字号 订阅     网上有很多文本分割软件都是按字节大小来分割的,主要用于小说类的文本分割,对于比较有规则的内容按行数进行分割非常不方便 ...

  4. .NET程序默认启动线程数

    问:一个.NET程序在运行时到底启动了多少个线程? 答:至少3个. 启动CLR并运行Main方法的主线程 调试器帮助线程 Finalizer线程 class Program { static void ...

  5. 可能是最简单的方式:利用Eclipse创建基于Maven的Web项目

    1. 新建一个maven项目 2.在弹出框中选择创建一个简单项目 3. 然后输入参数,需要注意的是,在packagin中,选择war,web项目应该选择war 4. 点击finish后,基本项目结构就 ...

  6. mysql安装使用--2 用户管理

    1 修改mysql.user表 添加用户 mysql> INSERT INTO mysql.user (Host,User,Password) VALUES (\'%\',\'system\', ...

  7. wget获取https资源

    使用wget获取 https资源,缺省命令下是要使用证书,如果还未安装证书,可以选择忽略. 例如没有github.com的证书,执行如下命令 mkdir -p model cd model wget ...

  8. ionic中将service中异步返回的数据赋值给controller的$scope

    1.service中异步获取数据实例 angular.module('starter.services', []) .factory('Chats', function($http,$q) {//定义 ...

  9. Mysql基于GTID主从复制

    Mysql5.6基于GTID全局事务的复制 什么是GTID?   GTID(Global Transaction Identifiers)是全局事务标识 当使用GTIDS时,在主上提交的每一个事务都会 ...

  10. Cantor表 1083

    题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/ ...