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

📄 ncbi_ansi_ext.c

📁 ncbi源码
💻 C
字号:
/* * =========================================================================== * PRODUCTION $Log: ncbi_ansi_ext.c,v $ * PRODUCTION Revision 1000.0  2003/10/29 16:34:42  gouriano * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R6.14 * PRODUCTION * =========================================================================== *//*  $Id: ncbi_ansi_ext.c,v 1000.0 2003/10/29 16:34:42 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Author:  Anton Lavrentiev * * File Description: *   Non-ANSI, yet widely used functions * */#include "ncbi_ansi_ext.h"#include <ctype.h>#include <stdlib.h>#ifndef HAVE_STRDUPextern char* strdup(const char* str){    size_t size = strlen(str) + 1;    char*  res  = (char*) malloc(size);    if (res)        memcpy(res, str, size);    return res;}#endif /*HAVE_STRDUP*/#ifndef HAVE_STRCASECMP/* We assume that we're using ASCII-based charsets */extern int strcasecmp(const char* s1, const char* s2){    const unsigned char* p1 = (const unsigned char*) s1;    const unsigned char* p2 = (const unsigned char*) s2;    unsigned char c1, c2;    if (p1 == p2)        return 0;    do {        c1 = *p1++;        c2 = *p2++;        c1 = c1 >= ' ' && c1 <= 'Z' ? c1 :            (c1 >= 'a' && c1 <= 'z' ? c1 - ('a' - 'A') : toupper(c1));        c2 = c2 >= ' ' && c2 <= 'Z' ? c2 :            (c2 >= 'a' && c2 <= 'z' ? c2 - ('a' - 'A') : toupper(c2));    } while (c1  &&  c1 == c2);    return c1 - c2;}extern int strncasecmp(const char* s1, const char* s2, size_t n){    const unsigned char* p1 = (const unsigned char*) s1;    const unsigned char* p2 = (const unsigned char*) s2;    unsigned char c1, c2;    if (p1 == p2  ||  n == 0)        return 0;    do {        c1 = *p1++;        c2 = *p2++;        c1 = c1 >= ' ' && c1 <= 'Z' ? c1 :            (c1 >= 'a' && c1 <= 'z' ? c1 - ('a' - 'A') : toupper(c1));        c2 = c2 >= ' ' && c2 <= 'Z' ? c2 :            (c2 >= 'a' && c2 <= 'z' ? c2 - ('a' - 'A') : toupper(c2));    } while (--n > 0  &&  c1  &&  c1 == c2);    return c1 - c2;}#endif /*HAVE_STRCASECMP*/extern char* strupr(char* s){    unsigned char* t = (unsigned char*) s;    while ( *t ) {        *t = toupper(*t);        t++;    }    return s;}extern char* strlwr(char* s){    unsigned char* t = (unsigned char*) s;    while ( *t ) {        *t = tolower(*t);        t++;    }    return s;}extern char* strncpy0(char* s1, const char* s2, size_t n){    *s1 = '\0';    return strncat(s1, s2, n);}/* * -------------------------------------------------------------------------- * $Log: ncbi_ansi_ext.c,v $ * Revision 1000.0  2003/10/29 16:34:42  gouriano * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R6.14 * * Revision 6.14  2002/10/29 22:18:29  lavr * Comply with man strdup(2) in the implementation of strdup() here * * Revision 6.13  2002/10/28 18:55:26  lavr * Fix change log to remove duplicate log entry for R6.12 * * Revision 6.12  2002/10/28 18:52:07  lavr * Conditionalize definitions of strdup() and str[n]casecmp() * * Revision 6.11  2002/10/28 15:41:56  lavr * Use "ncbi_ansi_ext.h" privately * * Revision 6.10  2002/09/24 15:05:45  lavr * Log moved to end * * Revision 6.9  2002/03/19 22:12:28  lavr * strcasecmp and strncasecmp are optimized (for ASCII range) * * Revision 6.8  2001/12/04 15:57:22  lavr * Tiny style adjustement * * Revision 6.7  2000/12/28 21:27:52  lavr * ANSI C++ compliant use of malloc (explicit casting of result) * * Revision 6.6  2000/11/07 21:45:16  lavr * Removed isupper/islower checking in strlwr/strupr * * Revision 6.5  2000/11/07 21:19:38  vakatov * Compilation warning fixed;  plus, some code beautification... * * Revision 6.4  2000/10/18 21:15:53  lavr * strupr and strlwr added * * Revision 6.3  2000/10/06 16:40:23  lavr * <string.h> included now in <connect/ncbi_ansi_ext.h> * conditional preprocessor statements removed * * Revision 6.2  2000/05/17 16:11:02  lavr * Reorganized for use of HAVE_* defines * * Revision 6.1  2000/05/15 19:03:41  lavr * Initial revision * * ========================================================================== */

⌨️ 快捷键说明

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