delete.c

来自「A simple bibliotech archive coded in C. 」· C语言 代码 · 共 92 行

C
92
字号
#include "head.h"void  usage() { fprintf (stdout,"\n\nDelete program to the biblioteca.db file\n"                 "Usage       : Required -p position -f filename\n"                 "Flag info   : -p Position of the book\n"                 "              -f Database file to elaborate\n\n"); }int  load(char *nomefile,struct libro v[]){ FILE *f; int k=0,i=0; if((f=fopen(nomefile,"r"))==NULL){ fprintf(stdout,"[*] I can't load the database file [*]\n");                                    return -1;                                  } while (fscanf(f,"%s%s%s%d%f\n",v[k].titolo,v[k].autori,&v[k].editore,&v[k].num_pagine,&v[k].costo) !=EOF) k++; fflush(f); fclose(f); return 0;} int delete_mem(int position,struct libro v[]){bzero(v[position].titolo,MAXLENGTH);bzero(v[position].editore,MAXLENGTH);bzero(v[position].autori,MAXLENGTH);v[position].costo='\0';v[position].num_pagine='\0';return 0;}int  delete(char *nome,int position) {int i;FILE *f;if(load(nome,books)==-1) return -1;if(delete_mem(position,books)==-1) return -1;fprintf (stdout,"[*] Position %d ereased in memory [*]\n",position);if((f=fopen(nome,"r+"))==NULL){ fprintf(stdout,"[*] I can't load the database file [*]\n");                                    return -1;                                  } for (i=0;i<MAX_BOOKS;i++) fprintf (f,"%s %s %s %d %f\n", books[i].titolo,books[i].autori,books[i].editore,books[i].num_pagine,books[i].costo);fprintf (stdout,"[*] Storing your changes in your database file...[*]\n");fclose(f);return 0;}int main(int argc , char * argv[]){int position;char *nomefile;char optchar;	if (argc<4 )		{		usage();		return -1;		}	else 		{		while ((optchar=getopt(argc,argv,"p:f:"))!=EOF) 			{			switch(optchar) 				{				case 'p' :					{						position=atoi(optarg);					if (position>MAX_BOOKS || position<0)					{				        fprintf (stdout,"[*] The position is over the MAX position fixed (%d) if you want to change edit head.h [*]\n",MAX_BOOKS);                                        return -1;					}					}				break;				case 'f' :				{				nomefile=malloc(strlen(optarg));				strncpy(nomefile,optarg,strlen(optarg));				}								}			}				}			if(delete(nomefile,position)==-1) return -1;return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?