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

📄 stab.c

📁 guide and some example with visualC++
💻 C
字号:
/* stringtab.c * *	(C) Copyright Apr 20 1997, Edmond J. Breen. *		   ALL RIGHTS RESERVED. * This code may be copied for personal, non-profit use only. * */#include <stdio.h>#include <string.h>#include "xalloc.h"#include "stab.h"/* STRING TABLE ROUTINES   -------------------*/char * stab_PopLastString(stab_t *stab){    char * p;    if(stab->n) {	stab->n--;	p = stab->strs[stab->n];	if(stab->n)	    stab->strs = xrealloc(stab->strs, sizeof(*stab->strs) * (stab->n));	else	    xfree(stab->strs);    } else	p = NULL;    return p;}int EiC_stab_FindString(stab_t *stab, char *s){    int i;    char **strs = stab->strs;        for(i=0;i<stab->n;++i,++strs)	if(strcmp(*strs,s) == 0)	    return i;    return -1;}    int EiC_stab_RemoveString(stab_t *stab, char *s){    int i = EiC_stab_FindString(stab,s);    if(i >= 0) {	xfree(stab->strs[i]);	if(i != stab->n - 1) 	    memcpy(&stab->strs[i],		   &stab->strs[i+1],		   (stab->n - i - 1) * sizeof(char*));	stab->n--;	if(stab->n) 	    stab->strs = xrealloc(stab->strs,			      sizeof(char*) * stab->n);	else	    xfree(stab->strs);	return 1;    }    return -1;}	char * EiC_stab_SaveString(stab_t *stab, char *s){    char *EiC_strsave(char*);    int i;    if((i=EiC_stab_FindString(stab,s)) < 0) {	if(stab->n == 0)	    stab->strs = xmalloc(sizeof(*stab->strs));	else	    stab->strs = xrealloc(stab->strs, sizeof(*stab->strs) * (stab->n+1));	i = stab->n; 	stab->strs[i] = EiC_strsave(s);	stab->n++;    }    return stab->strs[i];	}size_t EiC_stab_NextEntryNum(stab_t *stab){    return stab->n;}void EiC_stab_CleanUp(stab_t *stab, size_t bot){    while(stab->n> bot)	xfree(stab_PopLastString(stab));}void EiC_stab_Mark(stab_t *stab, char mark){    int i;    if(stab->n) {	xmark(stab->strs,mark);	for(i=0;i<stab->n;++i) 	    xmark(stab->strs[i],mark);    }}void EiC_stab_ShowStrings(stab_t *stab){    int i;    for(i=0;i<stab->n;++i)	printf("%s\n",stab->strs[i]);}/*END STRING TABLE ROUTINES*/

⌨️ 快捷键说明

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