`
ZeaLoVe
  • 浏览: 89897 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

实现C里面常用的字符串操作

 
阅读更多

    大公司的面试题除了一些算法和智力题以外,还会考察一些基本功,就是对代码的实现能力。这种问题除了算法题可以考察外也可以通过让你现场编写简单的库函数来考察。

    不要以为很简单。。细节问题很多的,要想给人好印象就必须处理好各种可能的情况。还记得我大四校招时候面腾讯2面就是被这样一个题目搞傻了。所以从别人拿拷点好东西来看看,这些都是源码

 

 

char * __cdecl strcat (char * dst,const char * src)
{
	char * cp = dst;
	
	while( *cp )
		cp++;                   /* find end of dst */
	
	while( *cp++ = *src++ ) ;       /* Copy src to end of dst */
	
	return( dst );                  /* return dst */
	
}

int __cdecl strcmp (const char * src,const char * dst)
{
	int ret = 0 ;
	
	while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
		++src, ++dst;
	
	if ( ret < 0 )
		ret = -1 ;
	else if ( ret > 0 )
		ret = 1 ;
	
	return( ret );
}

size_t __cdecl strlen (const char * str)
{
	const char *eos = str;
	
	while( *eos++ ) ;
	
	return( (int)(eos - str - 1) );
}

char * __cdecl strncat (char * front,const char * back,size_t count)
{
	char *start = front;
	
	while (*front++)
		;
	front--;
	
	while (count--)
		if (!(*front++ = *back++))
			return(start);
		
        *front = '/0';
        return(start);
}

int __cdecl strncmp (const char * first,const char * last,size_t count)
{
	if (!count)
		return(0);
	
	while (--count && *first && *first == *last)
	{
		first++;
		last++;
	}
	
	return( *(unsigned char *)first - *(unsigned char *)last );
}

/* Copy SRC to DEST.  */
char *
strcpy (dest, src)
char *dest;
const char *src;
{
	reg_char c;
	char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src);
	const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1;
	size_t n;
	
	do
    {
		c = *s++;
		s[off] = c;
    }
	while (c != '/0');
	
	n = s - src;
	(void) CHECK_BOUNDS_HIGH (src + n);
	(void) CHECK_BOUNDS_HIGH (dest + n);
	
	return dest;
}

char * __cdecl strncpy (char * dest,const char * source,size_t count)
{
	char *start = dest;
	
	while (count && (*dest++ = *source++))    /* copy string */
		count--;
	
	if (count)                              /* pad out with zeroes */
		while (--count)
			*dest++ = '/0';
		
        return(start);
}

 来源:http://blog.csdn.net/v_JULY_v/article/details/6417600

分享到:
评论
1 楼 zhc0822 2011-11-25  
好东西,捧走收藏。

相关推荐

    超级批量文本替换工具

    本软件特别适合需要批量替换大量文本里特定文字的网友,还可以实现特征字符串之间的模糊替换,是对付大量网页恶意代码的利器 可以处理 *.txt;*.htm;*.c;*.cpp;*.h;*.hpp;*.pas;*.dpr;*.bpr;*.asp; *.php;*.cgi;*.ini...

    八十多条C语言基础教程

    里面都是我新手时期学C的时候整理的一些TXT文档,因为分不够了,所以放上来赚点积分,都是很基础的东西,里面的代码都是经过我测试的,保证可用。 (1)输出Hello,world (2)标识符 (3)常量与变量 (4)整型数据 (5)实型...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    visual C++_Turbo C串口通信编程实践

    里面讲了MSComm控件 、 WinAPI 串口通信、CSerial类,例子很详实,每一步操作都有解释。作者是龚建伟,有一个个人主页www.gjwtech.com,讲串口通信的内容比较多,还行,大家可以先看看这个主页。 本书目录 第1章轻松...

    数据结构(王)c元代码

    这是数据结构里面的伪代码的c实现 1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一...

    JavaScript jQuery 中定义数组与操作及jquery数组操作

    数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 ...

    C语言编程兵书(完整扫描版 )pdf格式 电子书

    字符串;函数;指针;新的数据类型;联合,枚举和位域;预处理;文件操作;综合实例应用。随书所附光盘包含本书配套实例源文件、赠送的C语言学习资料和教学视频。本书适合所有想全面学习C语言的编程人员及C语言爱好...

    文本编辑器(MFC实现)

    ③本程序支持字符(串)统计、查找、替换以及对用户指定字符串的统计; ④本程序支持字体设置功能,用户可对字体、字形及字的大小进行设置; ⑤统计功能说明:空格数为所有空格数(中英文空格相同),英文字符数(只...

    入门学习Linux常用必会60个命令实例详解doc/txt

    虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。 例如,用户登录后,按一下“Alt+ F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+...

    c++ 运算符重载和方法重载

    字符串相关操作: strcpy(s1,s2)复制s2为s1; strcmp(s1,s2)比较s1和s2字符串内容是否相同 strcat(s1,s2)拼接字符串,把s2拼接在s1的末尾 strchr(s1,ch)找到s1这个字符串里面第一次出现ch这个字符的位置...

    操作系统实验3.doc

    子进程读字符串,将里面的 字符反向后再交给父进程,父进程最后读取并打印反向的字符串; 3、阅读例2的程序,运行一次该程序,然后用ipcs命令查看系统中共享存储区的情况, 再次执行该程序,再用ipcs命令查看系统中...

    Java-PHP-C#

    你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^' 作为开头 (i.e., "%[^a-zA-Z]%" 匹配含有 两个百分号里面有一个非字母 的字符串). 为了能够解释,但"^.[$()│*+?{\"作为有特殊意义的字符的...

    ReadChinese:读取项目中的所有中文,并且将这些中文按照国际化格式写入文件中,可以直接拿来实现国际化

    ReadChinese读取某个目录中的所有中文,并且将这些中文按照多语言(.string)格式写入文件中,可以直接拿来实现国际化###操作示例图如下###使用说明 本项目中,只是识别了.m和.h文件中的中文字符串,如果想要识别....

    object c/iphone 开发 试题

    (@是把C的字符串转成NSString的一个简写) 7.开发objc类,需要创建一个头文件和一个实现文件 ①头文件(.h):包含类的实例变量的名称和类型、描述方法参数和返回值类型的方法签名; ②实现文件(.m):包含这些方法的实现...

    freemarker总结

    下面是常用的内建的字符串函数: html:对字符串进行HTML编码 cap_first:使字符串第一个字母大写 lower_case:将字符串转换成小写 upper_case:将字符串转换成大写 trim:去掉字符串前后的空白字符 下面是集合的...

    cmd操作命令和linux命令大全收集

    3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具。它在 Windows NT/2000/XP 中均可使用,但在 Windows 98 中却没有集成这一个工具。 4. explorer-------打开...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    Excel公式大全操作应用实例(史上最全)

    如何把单元格中的数字提取出来(字符串中不连续) 数字在字符串中不连续如何提取数字 用如何提取“-”前后的字符 怎样删去﹕后的文字 怎样只取“.”之后的文字﹖ 获取单元格内容中字符串 如何提取一串数字中的几位...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

Global site tag (gtag.js) - Google Analytics