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

字符串函数汇总

 
阅读更多

面试中常常会要求写一些基本的库函数,尤其以字符串库函数考的最多,所以本文汇总了一些常见的字符串库函数的实现。此外,把与内存相关的操作函数也汇总到了一起。

//求字符串长度
int strlen(const char *s) {
	int n = 0;
	while (*s++ != '\0')
		n++;
	return n;
}

//字符串拷贝,返回指针是为了实现链式操作,如strlen(strcpy(dst, src)),dst需要保证有足够空间
char *strcpy(char *dst, const char *src) {
	assert(dst != NULL && src != NULL); //拷贝空串无意义
	char *ret = dst;
	while ((*dst++ = *src++) != '\0')
		;
	return ret;
}

//字符串比较,p>q则返回整数,p=q返回0,否则返回负数
int strcmp(const char *p, const char *q) {
	while (*p && *p == *q)
		p++, q++;
	return (int) ((unsigned char) *p - (unsigned char) *q);
}

// 找到字符c在字符串s中首次出现的位置
char *strchr(const char *s, char c) {
	for (; *s; s++)
		if (*s == c)
			return (char *) s;
	return NULL;
}

//拼接字符串,注意这里dst需要保证有足够的空间
char *strcat(char *dst, const char *src) {
	char *d = dst;
	while (*d)
		d++;
	while ((*d = *src) != '\0')
		;
	return dst;
}

//设置内存位置v开始的n个元素值为c
void *memset(void *v, int c, size_t n) {
	char *p = v;
	int m = n;

	while (--m >= 0) {
		*p++ = c;
	}
	return v;
}

//内存拷贝,注意这里不考虑内存覆盖的情况
void *memcpy(void *dst, const void *src, size_t n) {
	char *d = dst;
	const char *s = src;
	while (n--)
		*d++ = *s++;
	return dst;
}

//内存拷贝函数更健壮的版本,可以处理内存覆盖的情况
void *memmove(void *dst, const void *src, int n) {
	char *d = dst;
	const char *s = src;
	if (s + n > d) {
		s += n;
		d += n;
		 while (--n >= 0)
			 *--d = *--s;
	} else {
		while (--n >= 0)
			*d++ = *s++;
	}
	return dst;
}


分享到:
评论

相关推荐

    零散MATLAB资料分享-Matlab字符串函数汇总.pdf

    零散MATLAB资料分享-Matlab字符串函数汇总.pdf 最近在用MATLAB做一个项目,自然需要查很多东西,在网上搜集了一点资料,并非原创。本着分享的精神,希望能帮助到部分人。 包括以下内容 在MATLAB图形用户...

    vba字符串函数汇总vba_cpp.pdf

    VBA提供了丰富的字符串函数以满足不同需求的文本操作,以下是一些基本的VBA字符串函数及其知识点: 1. Len(string)函数用于计算字符串string的长度,即字符串中字符的总数。 2. Trim(string)函数可以去除字符串两...

    java常用字符串函数集锦

    Java 中常用的字符串函数集锦 Java 中字符串是连串的字符,但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java 将字符串作为 String 类型对象来处理。将字符串作为内置的对象处理允许 Java 提供十分...

    C语言字符串函数实现源码汇总.doc

    在面试过程中面试官是不是老叫你写函数实现,给你这个万能的文档。

    VB字符串处理函数_字符串处理函数_VB_

    本资料主要汇总了VB中的常用字符串处理函数,适用于初学者学习和参考。 1. **Left()** 函数:返回字符串的左部指定长度的部分。例如,`Left("Hello World", 3)` 返回 "Hel"。 2. **Right()** 函数:与Left()相反,...

    Delphi字符串函数大全

    本资料“Delphi字符串函数大全”汇总了这些功能强大的工具,旨在为Delphi程序员提供一个全面的参考。 1. **字符串类型与初始化** - `string`类型是Delphi中的基本数据类型,用于表示可变长度的Unicode字符串。例如...

    c++字符串处理汇总

    在C++编程语言中,字符串处理是至关重要的一个部分,涉及到很多函数和方法。这篇总结主要涵盖C++中处理字符串的基本知识点,包括基本概念、常用函数、操作技巧以及一些编程思想。 1. **字符串基本概念** 在C++中,...

    C++常用字符串分割方法实例汇总

    本文实例汇总了C++常用字符串分割方法,分享给大家供大家参考。具体分析如下: 我们在编程的时候经常会碰到字符串分割的问题,这里总结下,也方便我们以后查询使用。 一、用strtok函数进行字符串分割 原型: char *...

    Sqlserver 2014 之 自定义字符串聚合函数

    `STRING_AGG`函数允许我们以指定的分隔符连接一组字符串,这对于生成报告、汇总信息或构建复杂的查询非常有用。然而,在SQL Server 2014中,我们需要借助用户定义的聚合函数(User-Defined Aggregate, UDA)来达到...

    javascript字符串处理函数汇总.pdf

    字符串处理函数提供了丰富的功能,使得开发者能够轻松地对字符串进行各种操作。以下是对标题和描述中提及的JavaScript字符串处理函数的详细说明: 1. **concat()**:这个函数用于连接两个或多个字符串,创建一个新...

    零散MATLAB资料分享-Matlab数据库编程入门.pdf

    Matlab字符串函数汇总 MATLAB GUI 图标 matlab里cell和char,字符串与字符数组 MATLAB 中断问题 MATLAB读写Excel MATLAB中的数据写入函数dlmwrite MATLAB中GUI设计领悟-SINA_隐藏 MATLAB GUI...

    零散MATLAB资料分享-Matlab GUI 菜单和工具栏常用操作.doc

    Matlab字符串函数汇总 MATLAB GUI 图标 matlab里cell和char,字符串与字符数组 MATLAB 中断问题 MATLAB读写Excel MATLAB中的数据写入函数dlmwrite MATLAB中GUI设计领悟-SINA_隐藏 MATLAB GUI...

    python常见字符串处理函数与用法汇总

    下面我们将详细探讨`find`、`join`、`replace`以及`split`这四个常用的字符串处理函数。 1. `find`函数: `find`函数用于在一个较长的字符串中查找子串的位置。它返回子串在原字符串中最左边的索引,如果未找到则...

    sql字符串操作汇总.txt(更新)

    ### SQL字符串操作汇总知识点 #### 1. `STUFF` 函数 - **定义与功能**:`STUFF` 函数用于将一个字符串中的指定部分替换为另一个字符串。 - **语法**: ```sql STUFF(<源字符串>, <起始位置>, <长度>, <替换字符串...

    ThinkPHP字符串函数及常用函数汇总

    本文汇总了ThinkPHP的字符串处理函数及其他一些常用函数,可供开发人员参考使用。详情如下: get_client_ip() 获取客户端的IP地址 msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true) $str:要...

Global site tag (gtag.js) - Google Analytics