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

📄 strmake.c

📁 代码检索工具GLOBAL源码。可用来浏览分析LINUX源码。
💻 C
字号:
/* * Copyright (c) 1998, 1999, 2000, 2004 *	Tama Communications Corporation * * This file is part of GNU GLOBAL. * * GNU GLOBAL is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * GNU GLOBAL is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA. */#ifdef HAVE_CONFIG_H#include <config.h>#endif#ifdef STDC_HEADERS#include <stdlib.h>#endif#include "strbuf.h"#include "strmake.h"/* * strmake: make string from original string with limit character. * *	i)	p	original string. *	i)	lim	limitter *	r)		result string * * Usage: *	strmake("aaa:bbb", ":/=")	=> "aaaa" * * Note: The result string area is function local. So, following call *	 to this function may destroy the area. */const char *strmake(p, lim)	const char *p;	const char *lim;{	STATIC_STRBUF(sb);	const char *c;	strbuf_clear(sb);	for (; *p; p++) {		for (c = lim; *c; c++)			if (*p == *c)				goto end;		strbuf_putc(sb,*p);	}end:	return strbuf_value(sb);}/* * strtrim: make string from original string with deleting blanks. * *	i)	p	original string. *	i)	flag	TRIM_HEAD	from only head *			TRIM_TAIL	from only tail *			TRIM_BOTH	from head and tail *			TRIM_ALL	from all *	o)	len	length of result string *			if len == NULL then nothing returned. *	r)		result string * * Usage: *	strtrim(" # define ", TRIM_HEAD, NULL)	=> "# define " *	strtrim(" # define ", TRIM_TAIL, NULL)	=> " # define" *	strtrim(" # define ", TRIM_BOTH, NULL)	=> "# define" *	strtrim(" # define ", TRIM_ALL, NULL)	=> "#define" * * Note: The result string area is function local. So, following call *	 to this function may destroy the area. */const char *strtrim(p, flag, len)	const char *p;	int flag;	int *len;{	STATIC_STRBUF(sb);	int cut_off = -1;	strbuf_clear(sb);	/*	 * Delete blanks of the head.	 */	if (flag != TRIM_TAIL)		SKIP_BLANKS(p);	/*	 * Copy string.	 */	for (; *p; p++) {		if (isspace(*p)) {			if (flag != TRIM_ALL) {				if (cut_off == -1 && flag != TRIM_HEAD)					cut_off = strbuf_getlen(sb);				strbuf_putc(sb,*p);			}		} else {			strbuf_putc(sb,*p);			cut_off = -1;		}	}	/*	 * Delete blanks of the tail.	 */	if (cut_off != -1)		strbuf_setlen(sb, cut_off);	if (len)		*len = strbuf_getlen(sb);	return strbuf_value(sb);}

⌨️ 快捷键说明

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