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

📄 f_otherfun.c

📁 《unix/Linux下的Curses库开发指南》综合示例程序
💻 C
字号:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>/*字符转换*/unsigned char *Convert8859( unsigned char * str ){    int i;    int len = strlen( (char*) str );    unsigned char * p = str;    unsigned char * p2 = str;    unsigned char a, b;    do {        if ( (*p>>7) == 0x01 )            *p2 = (((*p)<<6)|(*(++p)));        else            *p2 = *p;        p++;        p2++;    } while ( (p-str+1)<=len );    *p2 = 0x0;    return ( str );}//1:注释行  2:主菜单项 3:子菜单项 4:无效行int LineIsWhich(char* LineStr){    switch(LineStr[0]) {        case '#':            return 1;            break;        case '[':            return 2;            break;        default:            return 4;            break;    }}/*拷贝srcstr中从begin_pos开始到end_pos结束的所有字符*/void strnmcpy(char* deststr,char* srcstr,int begin_pos,int end_pos){     int pstr,dstr=0;    for(pstr=begin_pos;pstr<=end_pos;pstr++)    {  	if (srcstr[pstr]>'\n' || srcstr[pstr]<'\n')	{     	deststr[dstr]=srcstr[pstr];		dstr++; 	} else break;    }  }/*获取20010516格式的时间*/void gettime(char string[9]){    struct tm *ptime;    char s[9];    time_t l;    l=time(NULL);    ptime=localtime(&l);    sprintf(s,"%4d%02d%02d",1900+ptime->tm_year,1+ptime->tm_mon,ptime->tm_mday);    strcpy(string,s);}int char_num( char *str, char ch ){    char *lp, *cp;    int num = 0;    if ( str==NULL )	return -1;    lp = str;    //strchr是寻找ch在lp中第一次出现的位置.    while ( (cp=strchr(lp, ch)) != NULL ) {	++num;	lp = cp + 1;    }    return num;}//将"hello|word|internet|shang|"字符按照'|'分割char** strsplit( char *str, char deli, int *spnum ){    char **retval, *lp=str, *cp;    int  num=0, i, len;    if ( str == NULL ) {	*spnum = 0;	return NULL;    }    if ( strlen(str) == 0 ) {	*spnum = 0;	return NULL;    }    *spnum = num = char_num(str, deli) + 1;    retval = (char **)malloc( num * sizeof(char*) );    for ( i=0 ; i<num ; ++i ) {	cp = strchr( lp, deli );	if ( cp == NULL )   	    len = strlen( lp );	else	    len = cp - lp;	retval[i] = (char *)malloc( len + 1 );	strncpy( retval[i], lp, len );	retval[i][len] = '\0';	lp = cp + 1;    }    return retval;}/*  * 按分隔符取串中的项  * 输入: 源串 *        分隔符 *        当前位置 * 输出:  * 返回: *        NULL - 没有项数 *        指针 - 指向项目内容区 */char * StrItemGetByDelimit( unsigned char* str, char* delimit, int* pos ){    char    * p;    char    * item;    int     item_len;    if ( * pos == strlen( ( char * ) str ) )        return ( NULL );    p = (char *)strstr( (char *)&str[ * pos ], delimit );    if (  p != NULL )    {        item_len = p - (char *)&str[ * pos ];        item = malloc( item_len + 1 );        memset( item, 0, item_len + 1 );        memcpy( item, &str[ * pos ], item_len );        * pos = * pos + item_len + strlen( delimit );    }    else if ( strlen( (char *)&str[ * pos ] ) > 0 )    {           item_len = strlen( (char *)&str[ * pos ] );        item = malloc( item_len + 1 );        memset( item, 0, item_len + 1 );        memcpy( item, &str[ * pos ], item_len );         * pos = * pos + item_len;    }        else        return ( NULL );    return ( item );}/*  * 按分隔符过滤串取其中的项  * 输入: 源串 *        分隔符 *        当前位置 * 输出:  * 返回: *        NULL - 没有项数 *        指针 - 指向项目内容区 */unsigned char * StrItemCutByDelimit( unsigned char * str, char * delimit, int * pos ){    int     i;    unsigned char    * p1, *p2;    unsigned char    * item;    int     item_len;    int     dlmt_len;    if ( * pos == strlen( (char *)str ) )        return ( NULL );    p1 = &str[ * pos ];    p2 = p1;    dlmt_len = strlen( delimit );    while ( * p1 )    {        for ( i = 0; i < dlmt_len; i ++ )            if ( delimit[ i ] == ( * p1 ) )                 break;        if ( i >= dlmt_len )        {            p2 = p1;            while( * p1 )            {                for ( i = 0; i < dlmt_len; i++ )                    if ( delimit[ i ] == ( * p1 ) )                        break;                if ( i < dlmt_len )                {                    item = malloc( p1 - p2 + 1 );                    memcpy( item, p2, p1 - p2 );                    item[ p1 - p2 ] = 0;                    (* pos) += ( p1 - &str[*pos] );                    return( item );                }                p1 ++;            }            if ( p1 - p2 > 0 )            {                 item = malloc( p1 - p2 + 1 );                memcpy( item, p2, p1 - p2 );                item[ p1 - p2 ] = 0;                (* pos) += ( p1 - &str[*pos] );                return( item );            }        }        p1 ++;    }    if ( p1 - p2 > 0 )    {         item = malloc( p1 - p2 + 1 );        memcpy( item, p2, p1 - p2 );        item[ p1 - p2 ] = 0;        (* pos) += ( p1 - &str[*pos] );        return( item );    }    return ( NULL );}

⌨️ 快捷键说明

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