⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addrecord.c

📁 linux下
💻 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 + -