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

📄 gcfstr.c

📁 完整的Dos下读写Txt文件程序。 包括CSV格式和Ini格式。
💻 C
字号:
/*   GCFSTR.C -- General C functions for string processing   M.L.Y  1998.10.07   MODIFIED   (YYYY.MM.DD)    M.L.Y      1998.10.07 -  Creation    M.L.Y      1999.06.22 -  Add ASCII_SB_to_GB_DB()    M.L.Y      1999.06.23 -  Add Str_ASB2GBDB()                                 trimAstr()                                 trimGBstr()                                 padr()                                 padl()                                 GBpadr()                                 GBpadl()*/#include "GCFSTR.H"/* ------------------------------------------------------------------------- */void * strmovcpy(void * dest, void * src, size_t n)/*   字符串拷贝: 将 src 的 n 个字节复制到 dest, 且在 dest 之后加上 NUL   返回 dest*/{        memmove(dest, src, n);        *((char *) dest + n) = '\0';        return dest;}/* ------------------------------------------------------------------------- */USGC * ltrimstr(USGC * str)/*   将字符串 str 左边的空白字符(空格、tab、回车、换行、换页)去掉   返回 str   M.L.Y  1995.04.15, 11.23*/{        int i, j, n;        n = strlen((char *) str);        for (i = 0; i < n; i++) {                if (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' &&                        str[i] != '\r' && str[i] != '\f')                        break;        }        if (i > 0) {                for (j = 0; ; i++, j++) {                        str[j] = str[i];                        if (str[j] == '\0')                                break;                }        }        return str;}/* ------------------------------------------------------------------------- */USGC * rtrimstr(USGC * str)/*   将字符串 str 右边的空白字符(空格、tab、回车、换行、换页)去掉   返回 str   M.L.Y  1995.04.15, 08.23*/{        int i;        for (i = strlen((char *) str) - 1; i >= 0; i--)                if (str[i] == ' ' || str[i] == '\t' || str[i] == '\n' ||                        str[i] == '\r' || str[i] == '\f')                        str[i] = '\0';                else                        break;        return str;}/* ------------------------------------------------------------------------- */USGC * trimstr(USGC * str)/*   将字符串 str 左边和右边的空白字符(空格、tab、回车、换行、换页)去掉   返回 str*/{    return(ltrimstr(rtrimstr(str)));}/* ------------------------------------------------------------------------- */USGC * upperstr(USGC * str)/*   将字符串 str 中的字母变为大写   返回 str   M.L.Y  1995.04.15, 11.23*/{        int i, n;        n = strlen((char *) str);        for (i = 0; i < n; i++)                str[i] = toupper(str[i]);        return str;}/* ------------------------------------------------------------------------- */USGC * lowerstr(USGC * str)/*   将字符串 str 中的字母变为小写   返回 str   M.L.Y  1995.04.15, 11.23*/{        int i, n;        n = strlen((char *) str);        for (i = 0; i < n; i++)                str[i] = tolower(str[i]);        return str;}/* ------------------------------------------------------------------------- */int sprintf_end(void * buffer, void * fmt, ...)/*   仿照 printf 的输出追加到 buffer 字符串的尾部   sprintf to buffer end   M.L.Y  1999.6.2*/{        char tmpstr1[8192];        va_list arg_ptr;        va_start(arg_ptr, fmt);        vsprintf(tmpstr1, fmt, arg_ptr);        va_end(arg_ptr);        strcat(buffer, tmpstr1);        return 0;}/* ------------------------------------------------------------------------- */USGC * ASCII_SB_to_GB_DB(char c1, USGC * GB_DB)/*   将ASCII单字节的字符(c1)按GB2312-80标准转换为双字节字符(GB_DB)并返回,   如 1->1, A->A   M.L.Y  1999.06.22*/{        if (c1 == 0x20)/* ' ' */        {                GB_DB[0] = 0xA1;                GB_DB[1] = 0xA1;                GB_DB[2] = NUL;                return GB_DB;        }        if (c1 == 0x24)/* $ */        {                GB_DB[0] = 0xA1;                GB_DB[1] = 0xE7;                GB_DB[2] = NUL;                return GB_DB;        }        if (c1 > 0x20 && c1 < 0x7F) {                GB_DB[0] = 0xA3;                GB_DB[1] = 0x80 + c1;                GB_DB[2] = NUL;                return GB_DB;        } else                return NULL;}/* ------------------------------------------------------------------------- */USGC * Str_ASB2GBDB(USGC * strfrom, USGC * strto)/*   将ASCII字符串strfrom转换为strto,其中单字节的字符按GB2312-80标准转换为双字节字符,   如 1->1, A->A   M.L.Y  1999.06.23*/{        USGC GB_DB[3] = {0x20, 0x20, NUL};        int i, j, n;        for (i = 0, j = 0, n = strlen((char *) strfrom); i < n; i++) {                if (strfrom[i] >= 0x20 && strfrom[i] < 0x7F) {                        ASCII_SB_to_GB_DB(strfrom[i], GB_DB);                        strto[j++] = GB_DB[0];                        strto[j++] = GB_DB[1];                } else                        strto[j++] = strfrom[i];        }        strto[j] = NUL;        return strto;}/* ------------------------------------------------------------------------- */USGC * trimAstr(USGC * str)/*   Trim ASCII string and return str   White space includes 0x20, 0x09, 0x0D, 0x0A, 0x0C   M.L.Y  1999.06.23*/{        int i;        for (i = strlen((char *) str) - 1; i >= 0; i--)                if (str[i] == 0x20 || str[i] == 0x09 ||                        str[i] == 0x0D || str[i] == 0x0A || str[i] == 0x0C)                        str[i] = NUL;                else                        break;        return str;}/* ------------------------------------------------------------------------- */USGC * trimGBstr(USGC * str)/*   Trim ASCII string contained GB DBCS and return str   White space includes 0x20, 0x09, 0x0D, 0x0A, 0x0C, 0xA1A1   M.L.Y  1999.06.23*/{        int i;        for (i = strlen((char *) str) - 1; i >= 0; i--) {                if (str[i] == 0x20 || str[i] == 0x09 ||                        str[i] == 0x0D || str[i] == 0x0A || str[i] == 0x0C)                        str[i] = NUL;                else {                        if (str[i] == 0xA1 && i > 0 && str[i - 1] == 0xA1)                                str[--i] = NUL;                        else                                break;                }        }        return str;}/* ------------------------------------------------------------------------- */USGC * padr(USGC * str1, int len, USGC pad_char)/*   Pad right using pad_char to length len   Return str1   If str1 length > len, not change str1   M.L.Y  1998.9.10*/{        int n;        n = strlen((char *) str1);        if (n < len) {                memset(str1 + n, pad_char, len - n);                str1[len] = NUL;        }        return str1;}/* ------------------------------------------------------------------------- */USGC * padl(USGC * str1, int len, USGC pad_char)/*   Pad left using pad_char to length len   Return str1   If str1 length > len, not change str1   M.L.Y  1998.9.10*/{        int n;        USGC * p1;        n = strlen((char *) str1);        if (n < len) {                p1 = str1 - n + len;                memmove(p1, str1, n + 1);                memset(str1, pad_char, len - n);        }        return str1;}/* ------------------------------------------------------------------------- */USGC * GBpadr(USGC * str1, int len)/*   ASCII string str1: pad right using 0xA1A1 to length len   Return str1   If str1 length > len or invalid, return NULL   M.L.Y  1999.06.23*/{        int n;        n = strlen((char *) str1);        if (n > len || (len - n) % 2 != 0)                return NULL;        if (n < len) {                memset(str1 + n, 0xA1, len - n);                str1[len] = NUL;        }        return str1;}/* ------------------------------------------------------------------------- */USGC * GBpadl(USGC * str1, int len)/*   ASCII string str1: pad left using 0xA1A1 to length len   Return str1   If str1 length > len or invalid, return NULL   M.L.Y  1999.06.23*/{        int n;        USGC * p1;        n = strlen((char *) str1);        if (n > len || (len - n) % 2 != 0)                return NULL;        if (n < len) {                p1 = str1 - n + len;                memmove(p1, str1, n + 1);                memset(str1, 0xA1, len - n);        }        return str1;}/* End of file */

⌨️ 快捷键说明

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