亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbfopen.c

?? Source code, and some other odds and ends can be downloaded from http://shapelib.maptools.org/dl.
?? C
?? 第 1 頁 / 共 4 頁
字號:
/****************************************************************************** * $Id: dbfopen.c,v 1.37 2001/07/04 05:18:09 warmerda Exp $ * * Project:  Shapelib * Purpose:  Implementation of .dbf access API documented in dbf_api.html. * Author:   Frank Warmerdam, warmerda@home.com * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * This software is available under the following "MIT Style" license, * or at the option of the licensee under the LGPL (see LICENSE.LGPL).  This * option is discussed in more detail in shapelib.html. * * -- *  * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************** * * $Log: dbfopen.c,v $ * Revision 1.37  2001/07/04 05:18:09  warmerda * do last fix properly * * Revision 1.36  2001/07/04 05:16:09  warmerda * fixed fieldname comparison in DBFGetFieldIndex * * Revision 1.35  2001/06/22 02:10:06  warmerda * fixed NULL shape support with help from Jim Matthews * * Revision 1.33  2001/05/31 19:20:13  warmerda * added DBFGetFieldIndex() * * Revision 1.32  2001/05/31 18:15:40  warmerda * Added support for NULL fields in DBF files * * Revision 1.31  2001/05/23 13:36:52  warmerda * added use of SHPAPI_CALL * * Revision 1.30  2000/12/05 14:43:38  warmerda * DBReadAttribute() white space trimming bug fix * * Revision 1.29  2000/10/05 14:36:44  warmerda * fix bug with writing very wide numeric fields * * Revision 1.28  2000/09/25 14:18:07  warmerda * Added some casts of strlen() return result to fix warnings on some * systems, as submitted by Daniel. * * Revision 1.27  2000/09/25 14:15:51  warmerda * added DBFGetNativeFieldType() * * Revision 1.26  2000/07/07 13:39:45  warmerda * removed unused variables, and added system include files * * Revision 1.25  2000/05/29 18:19:13  warmerda * avoid use of uchar, and adding casting fix * * Revision 1.24  2000/05/23 13:38:27  warmerda * Added error checks on return results of fread() and fseek(). * * Revision 1.23  2000/05/23 13:25:49  warmerda * Avoid crashing if field or record are out of range in dbfread*attribute(). * * Revision 1.22  1999/12/15 13:47:24  warmerda * Added stdlib.h to ensure that atof() is prototyped. * * Revision 1.21  1999/12/13 17:25:46  warmerda * Added support for upper case .DBF extention. * * Revision 1.20  1999/11/30 16:32:11  warmerda * Use atof() instead of sscanf(). * * Revision 1.19  1999/11/05 14:12:04  warmerda * updated license terms * * Revision 1.18  1999/07/27 00:53:28  warmerda * ensure that whole old field value clear on write of string * * Revision 1.1  1999/07/05 18:58:07  warmerda * New * * Revision 1.17  1999/06/11 19:14:12  warmerda * Fixed some memory leaks. * * Revision 1.16  1999/06/11 19:04:11  warmerda * Remoted some unused variables. * * Revision 1.15  1999/05/11 03:19:28  warmerda * added new Tuple api, and improved extension handling - add from candrsn * * Revision 1.14  1999/05/04 15:01:48  warmerda * Added 'F' support. * * Revision 1.13  1999/03/23 17:38:59  warmerda * DBFAddField() now actually does return the new field number, or -1 if * it fails. * * Revision 1.12  1999/03/06 02:54:46  warmerda * Added logic to convert shapefile name to dbf filename in DBFOpen() * for convenience. * * Revision 1.11  1998/12/31 15:30:34  warmerda * Improved the interchangability of numeric and string attributes.  Add * white space trimming option for attributes. * * Revision 1.10  1998/12/03 16:36:44  warmerda * Use r+b instead of rb+ for binary access. * * Revision 1.9  1998/12/03 15:34:23  warmerda * Updated copyright message. * * Revision 1.8  1997/12/04 15:40:15  warmerda * Added newline character after field definitions. * * Revision 1.7  1997/03/06 14:02:10  warmerda * Ensure bUpdated is initialized. * * Revision 1.6  1996/02/12 04:54:41  warmerda * Ensure that DBFWriteAttribute() returns TRUE if it succeeds. * * Revision 1.5  1995/10/21  03:15:12  warmerda * Changed to use binary file access, and ensure that the * field name field is zero filled, and limited to 10 chars. * * Revision 1.4  1995/08/24  18:10:42  warmerda * Added use of SfRealloc() to avoid pre-ANSI realloc() functions such * as on the Sun. * * Revision 1.3  1995/08/04  03:15:16  warmerda * Fixed up header. * * Revision 1.2  1995/08/04  03:14:43  warmerda * Added header. */static char rcsid[] =   "$Id: dbfopen.c,v 1.37 2001/07/04 05:18:09 warmerda Exp $";#include "shapefil.h"#include <math.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#ifndef FALSE#  define FALSE		0#  define TRUE		1#endifstatic int	nStringFieldLen = 0;static char * pszStringField = NULL;/************************************************************************//*                             SfRealloc()                              *//*                                                                      *//*      A realloc cover function that will access a NULL pointer as     *//*      a valid input.                                                  *//************************************************************************/static void * SfRealloc( void * pMem, int nNewSize ){    if( pMem == NULL )        return( (void *) malloc(nNewSize) );    else        return( (void *) realloc(pMem,nNewSize) );}/************************************************************************//*                           DBFWriteHeader()                           *//*                                                                      *//*      This is called to write out the file header, and field          *//*      descriptions before writing any actual data records.  This      *//*      also computes all the DBFDataSet field offset/size/decimals     *//*      and so forth values.                                            *//************************************************************************/static void DBFWriteHeader(DBFHandle psDBF){    unsigned char	abyHeader[XBASE_FLDHDR_SZ];    int		i;    if( !psDBF->bNoHeader )        return;    psDBF->bNoHeader = FALSE;/* -------------------------------------------------------------------- *//*	Initialize the file header information.				*//* -------------------------------------------------------------------- */    for( i = 0; i < XBASE_FLDHDR_SZ; i++ )        abyHeader[i] = 0;    abyHeader[0] = 0x03;		/* memo field? - just copying 	*/    /* date updated on close, record count preset at zero */    abyHeader[8] = psDBF->nHeaderLength % 256;    abyHeader[9] = psDBF->nHeaderLength / 256;        abyHeader[10] = psDBF->nRecordLength % 256;    abyHeader[11] = psDBF->nRecordLength / 256;/* -------------------------------------------------------------------- *//*      Write the initial 32 byte file header, and all the field        *//*      descriptions.                                     		*//* -------------------------------------------------------------------- */    fseek( psDBF->fp, 0, 0 );    fwrite( abyHeader, XBASE_FLDHDR_SZ, 1, psDBF->fp );    fwrite( psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields, psDBF->fp );/* -------------------------------------------------------------------- *//*      Write out the newline character if there is room for it.        *//* -------------------------------------------------------------------- */    if( psDBF->nHeaderLength > 32*psDBF->nFields + 32 )    {        char	cNewline;        cNewline = 0x0d;        fwrite( &cNewline, 1, 1, psDBF->fp );    }}/************************************************************************//*                           DBFFlushRecord()                           *//*                                                                      *//*      Write out the current record if there is one.                   *//************************************************************************/static void DBFFlushRecord( DBFHandle psDBF ){    int		nRecordOffset;    if( psDBF->bCurrentRecordModified && psDBF->nCurrentRecord > -1 )    {	psDBF->bCurrentRecordModified = FALSE;	nRecordOffset = psDBF->nRecordLength * psDBF->nCurrentRecord 	                                             + psDBF->nHeaderLength;	fseek( psDBF->fp, nRecordOffset, 0 );	fwrite( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp );    }}/************************************************************************//*                              DBFOpen()                               *//*                                                                      *//*      Open a .dbf file.                                               *//************************************************************************/   DBFHandle SHPAPI_CALLDBFOpen( const char * pszFilename, const char * pszAccess ){    DBFHandle		psDBF;    unsigned char		*pabyBuf;    int			nFields, nRecords, nHeadLen, nRecLen, iField, i;    char		*pszBasename, *pszFullname;/* -------------------------------------------------------------------- *//*      We only allow the access strings "rb" and "r+".                  *//* -------------------------------------------------------------------- */    if( strcmp(pszAccess,"r") != 0 && strcmp(pszAccess,"r+") != 0         && strcmp(pszAccess,"rb") != 0 && strcmp(pszAccess,"rb+") != 0        && strcmp(pszAccess,"r+b") != 0 )        return( NULL );    if( strcmp(pszAccess,"r") == 0 )        pszAccess = "rb";     if( strcmp(pszAccess,"r+") == 0 )        pszAccess = "rb+";/* -------------------------------------------------------------------- *//*	Compute the base (layer) name.  If there is any extension	*//*	on the passed in filename we will strip it off.			*//* -------------------------------------------------------------------- */    pszBasename = (char *) malloc(strlen(pszFilename)+5);    strcpy( pszBasename, pszFilename );    for( i = strlen(pszBasename)-1; 	 i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'	       && pszBasename[i] != '\\';	 i-- ) {}    if( pszBasename[i] == '.' )        pszBasename[i] = '\0';    pszFullname = (char *) malloc(strlen(pszBasename) + 5);    sprintf( pszFullname, "%s.dbf", pszBasename );            psDBF = (DBFHandle) calloc( 1, sizeof(DBFInfo) );    psDBF->fp = fopen( pszFullname, pszAccess );    if( psDBF->fp == NULL )    {        sprintf( pszFullname, "%s.DBF", pszBasename );        psDBF->fp = fopen(pszFullname, pszAccess );    }        free( pszBasename );    free( pszFullname );        if( psDBF->fp == NULL )    {        free( psDBF );        return( NULL );    }    psDBF->bNoHeader = FALSE;    psDBF->nCurrentRecord = -1;    psDBF->bCurrentRecordModified = FALSE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人久久视频在线观看| 中文字幕中文字幕中文字幕亚洲无线| 国产激情视频一区二区三区欧美 | 欧美成人a∨高清免费观看| 97久久精品人人做人人爽50路 | 欧美精品在线视频| 一本久道久久综合中文字幕| 国产一区在线观看麻豆| 蜜臀av性久久久久蜜臀av麻豆| 亚洲国产精品久久人人爱蜜臀 | 欧美一级二级在线观看| 在线观看日韩精品| 色伊人久久综合中文字幕| 成人毛片在线观看| 成人一区二区三区视频| 国产成人欧美日韩在线电影| 国产美女一区二区| 国产裸体歌舞团一区二区| 国产精品正在播放| 成人妖精视频yjsp地址| eeuss影院一区二区三区| 国产91精品在线观看| 成人av在线播放网址| 99re在线精品| 欧美人体做爰大胆视频| 欧美日韩国产免费| 欧美一级免费大片| 久久久精品天堂| 中文字幕制服丝袜一区二区三区| 国产精品国产自产拍在线| 亚洲色图视频网| 一区二区三区四区视频精品免费| 亚洲综合色在线| 视频一区二区中文字幕| 九色综合国产一区二区三区| 国产精品一区三区| 色呦呦网站一区| 91精品国产一区二区三区蜜臀| 久久久久久久久蜜桃| 国产精品福利电影一区二区三区四区| 亚洲精品乱码久久久久久日本蜜臀| 免费看欧美美女黄的网站| 日日夜夜一区二区| 激情都市一区二区| 色综合久久久久综合体桃花网| 欧美日韩精品免费观看视频| 精品久久久久久久久久久久久久久久久 | 日韩国产高清影视| 高潮精品一区videoshd| 欧美日韩一区国产| 国产三级一区二区三区| 亚洲狠狠爱一区二区三区| 精品在线播放免费| 色88888久久久久久影院按摩 | 国产精品亚洲午夜一区二区三区| 99综合电影在线视频| 欧美一区午夜精品| 亚洲色图欧洲色图| 麻豆91在线播放免费| 91天堂素人约啪| 久久综合九色综合欧美98| 一区二区日韩av| 成人性生交大片免费看视频在线| 欧美色中文字幕| 国产精品卡一卡二卡三| 久久成人久久爱| 精品视频一区二区不卡| 日本一区二区三区dvd视频在线| 亚洲成人一区在线| 不卡电影免费在线播放一区| 日韩三级免费观看| 亚洲成人免费视| 91麻豆精品一区二区三区| 久久综合久久久久88| 天堂av在线一区| 91免费国产在线观看| 国产肉丝袜一区二区| 美女视频黄久久| 欧美日韩国产在线观看| 亚洲欧美区自拍先锋| 国产aⅴ综合色| 国产午夜亚洲精品不卡| 免费在线欧美视频| 91精品黄色片免费大全| 亚洲综合在线视频| 麻豆91免费观看| 看电视剧不卡顿的网站| 欧美三片在线视频观看 | 国产成人av影院| 久久综合资源网| 国内成+人亚洲+欧美+综合在线| 欧美一区二区精美| 免费成人av资源网| 日韩精品一区二区三区视频播放 | 精品一区二区三区久久| 91精品国产入口| 蜜臀久久99精品久久久久久9| 在线播放日韩导航| 蜜臀av亚洲一区中文字幕| 欧美一区二区啪啪| 久久99国产精品麻豆| 国产亚洲精品超碰| 成人精品高清在线| 亚洲青青青在线视频| 日本韩国精品一区二区在线观看| 亚洲男人的天堂一区二区| 欧美中文字幕不卡| 蜜臀久久久久久久| 久久久亚洲精华液精华液精华液| 激情久久五月天| 国产精品毛片高清在线完整版| 本田岬高潮一区二区三区| 亚洲欧美日韩久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲午夜激情网页| 91精品欧美久久久久久动漫 | 欧美一区日韩一区| 国产一区不卡在线| 亚洲精品视频免费观看| 777a∨成人精品桃花网| 国产精品资源网| 亚洲狠狠丁香婷婷综合久久久| 欧美日本一区二区三区四区| 美日韩一区二区| 欧美激情在线看| 欧美伊人久久大香线蕉综合69 | 在线一区二区三区四区五区| 亚洲va国产天堂va久久en| 欧美va亚洲va| 色琪琪一区二区三区亚洲区| 亚洲色图一区二区三区| 国产精品99久久久久| 亚洲综合网站在线观看| 久久久99久久| 欧美日韩国产经典色站一区二区三区| 国产一区二区在线视频| 一区二区理论电影在线观看| 精品电影一区二区三区 | 精品一区二区综合| 亚洲免费视频中文字幕| 欧美电影免费观看高清完整版在线观看| 国产999精品久久久久久| 日韩精品三区四区| 亚洲人成在线播放网站岛国| 久久日韩精品一区二区五区| 97久久超碰国产精品| 国产美女在线观看一区| 日韩国产高清影视| 亚洲主播在线观看| 国产精品黄色在线观看| 久久品道一品道久久精品| 欧美高清激情brazzers| 91美女精品福利| 成人h动漫精品一区二| 国产精品中文字幕一区二区三区| 日韩精品免费视频人成| 亚洲一区二区三区中文字幕| 国产精品久久久久久久久图文区 | 肉色丝袜一区二区| 伊人开心综合网| 最新日韩在线视频| 欧美激情一区二区三区全黄| 欧美tk—视频vk| 日韩亚洲欧美在线| 欧美理论片在线| 欧美自拍偷拍午夜视频| 色一情一乱一乱一91av| 99r精品视频| 99精品视频免费在线观看| 国产成人高清视频| 国产精品99久久久久久似苏梦涵| 麻豆成人免费电影| 美女视频一区二区| 久久精品国产一区二区| 蜜桃av噜噜一区二区三区小说| 婷婷开心久久网| 日韩中文字幕一区二区三区| 欧美日韩精品高清| 韩国v欧美v日本v亚洲v| 麻豆成人综合网| 国产在线精品免费av| 韩国一区二区在线观看| 国产一区二区在线影院| 国产宾馆实践打屁股91| av一区二区三区黑人| 色综合久久66| 欧美日韩亚洲综合一区二区三区| 欧美三级韩国三级日本一级| 欧美日韩一区二区三区不卡| 欧美精品丝袜中出| 日韩欧美一二三四区| 久久久一区二区| 中文字幕一区二区三区四区不卡| 中文字幕一区二区三区视频| 中文字幕佐山爱一区二区免费| 亚洲免费看黄网站| 偷拍自拍另类欧美| 精彩视频一区二区| caoporn国产一区二区| 欧美日韩综合一区|