📄 addrecord.c
字号:
#include<stdlib.h>#include<stdio.h>#include<sys/types.h>#include<fcntl.h>#include<sys/stat.h>#include<unistd.h>#include<string.h>#include"table.h"int do_record_insert(T_TableDes* pTableDes,T_FieldNode* pFieldNodes,unsigned int nCount)/*ʵ����*/{ int i,j; void* pRecord; long fd; int fsyncd; fd=pTableDes->fd; pRecord=malloc(pTableDes->pTableHeader->nRecSize); /*��һ���д�ļļ��ϢĿռ�*/ memset(pRecord,0,pTableDes->pTableHeader->nRecSize); /*ʼpRecord*/ for(i=0;i<nCount;i++) /*����pFieldNodes,�д��ļļ�pRecord*/ { j=0; while((j<pTableDes->pTableHeader->nColumnCount)&&(strcmp(pFieldNodes[i].szColumnName,pTableDes->pColInfos[j].szColumnName))) /*pColInfos[j]Է??�pColInfos+j*sizeof(T_ColumnInfos)*/ j++; if(j==pTableDes->pTableHeader->nColumnCount) /*����=ncount�˵������û�����ֶ�*/ { printf("wrong input parameter\n"); exit(EXIT_FAILURE); } /*pRecField[j]Է???*/ //p=memcpy(pRecord+pTableDes->pRecFields[j].nFieldStart,pFieldNodes[i].pFieldData,pTableDes->pRecFields[j].nFieldSize); /*����!=ncount�Ϊ�ֶε�ֶκ��˼����Ӧ�õ��*/ switch(pTableDes->pColInfos[j].ColumnType) { case conchars: memcpy(pRecord+pTableDes->pRecFields[j].nFieldStart,pFieldNodes[i].pFieldData,pTableDes->pRecFields[j].nFieldSize); break; case shortint: *(short*)(pRecord+pTableDes->pRecFields[j].nFieldStart)=*(short*)(pFieldNodes[i].pFieldData); break; case longint: *(long*)(pRecord+pTableDes->pRecFields[j].nFieldStart)=*(long*)(pFieldNodes[i].pFieldData); break; case floatval: *(float*)(pRecord+pTableDes->pRecFields[j].nFieldStart)=*(float*)(pFieldNodes[i].pFieldData); break; } } lseek(fd,0,SEEK_END); /*�д�β*/ write(fd,(char*)pRecord,(size_t)(pTableDes->pTableHeader->nRecSize)); /*(size_t)ǿ���ת???*/ pTableDes->pTableHeader->nValidRecordCount++; //记录数加1 lseek(fd,0,SEEK_SET); write(fd,pTableDes->pTableHeader,sizeof(T_TableHeader)); if((fsyncd=fsync(fd))==-1) /*�дش��*/ { perror("file synchronize failed"); exit(EXIT_FAILURE); } return 1; /*ظϵͳ�*/}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -