📄 fileinout.c
字号:
#include <stdio.h>#include <fcntl.h>#include <string.h>#include <errno.h>#include <sys/stat.h>#define MAX_BUF_SIZE 1024#define MIN_BUF_SIZE 256void exit();typedef struct{ char name[MIN_BUF_SIZE]; char pwd[MIN_BUF_SIZE];}USRINFO;int writeinfo(char *fp,const USRINFO *sp){ int fd,bytes_write; if((fd=open(fp,O_WRONLY|O_APPEND,S_IRUSR|S_IWUSR))==-1) { fprintf(stderr,"Open %s Error:%s\n",fp,strerror(errno)); exit(1); } bytes_write=write(fd,sp,sizeof(USRINFO)); close(fd); return bytes_write;}int readinfo(int fd,USRINFO *sp){ int bytes_read; bytes_read=read(fd,sp,sizeof(USRINFO)); //printf("read ok,name = %s,pwd =%s, size = %d\n",sp->name,sp->pwd,bytes_read); return bytes_read;}int checkusr(char *fp,const USRINFO *sp){ int fd,bytes_read; USRINFO buf; if((fd=open(fp,O_RDONLY,S_IRUSR|S_IWUSR))==-1) { fprintf(stderr,"Open %s Error:%s\n",fp,strerror(errno)); exit(1); } while(bytes_read=readinfo(fd,&buf)) { if((bytes_read==-1)&&(errno!=EINTR))break; else if(bytes_read>0) { if(strcmp(sp->name,buf.name)==0) { if(strcmp(sp->pwd,buf.pwd)==0) return 1; else return 0; } bzero(&buf,sizeof(USRINFO)); } } close(fd); return 0;}/*int main(void){ USRINFO buf; //printf("name = %s,pwd = %s ,size= %d \n",wenger.name,wenger.pwd,sizeof(USRINFO)); int fd,i; int bytes_read,bytes_write; char file1[255]="database"; /* for(i=0;i<3;i++) { printf("n = :"); gets(buf.name); printf("w = :"); gets(buf.pwd); writeinfo(file1,&buf); } if((fd=open(file1,O_RDONLY,S_IRUSR|S_IWUSR))==-1) { fprintf(stderr,"Open %s Error:%s\n",file1,strerror(errno)); exit(1); } while(bytes_read=readinfo(fd,&buf)) { if((bytes_read==-1)&&(errno!=EINTR))break; else if(bytes_read>0) { printf("name = %s,pwd = %s \n",buf.name,buf.pwd); bzero(&buf,sizeof(USRINFO)); } } close(fd); printf("UID = :"); gets(buf.name); printf("PWD = :"); gets(buf.pwd); int a; if((a=checkusr(file1,&buf))==1) printf("login\n"); else printf("unvalid usr\n"); return 0;}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -