C关于字符串操作的库函数实现总结
常用C关于字符串操作的库函数实现:
//获取字符串长度
int Strlen(const char* s) {
assert(s != NULL);
int len = ;
while (*s++ != '\0') {
len++;
}
return len;
} //将src字符串复制到dest中
char* Strcpy(char* dest, const char* src) {
assert(dest != NULL && src != NULL);
char* p = dest;
while ((*dest++ = *src++) != '\0');
return dest;
} //将src字符串前n个字符复制到dest中
char* Strncpy(char* dest, const char* src, int n) {
assert(dest != NULL && src != NULL);
char* p = dest;
int m = ;
while (*p++ != '\0') {
m++;
}
if (n > m)
return NULL; p = dest;
while (n--) {
*p++ = *src++;
}
return dest;
} //比较两个字符串大小
int Strcmp(const char* str1, const char* str2) {
assert(str1 != NULL && str2 != NULL);
while (*str1 && *str2 && *str1 == *str2) {
str1++;
str2++;
}
return *str1 - *str2;
} //将src字符串连接到dest字符串后面
char* Strcat(char* dest, const char* src) {
assert(dest != NULL && src != NULL);
char* p = dest;
while (*p++ != '\0');
p--;
while ((*p++ = *src++) != '\0');
return dest;
} /*
* memcpy函数用于资源内存(src指向的内存)拷贝到目标内存(dest指向的内存);拷贝的个数size
* 用法::(1)可以拷贝任何类型的对象,因为函数的参数类型是void* ,由于函数拷贝是一个字节一个
* 字节拷贝,实际操作是将void*强制转换成了char*,这样才能保证每一次加一个指针
*/
void Memcpy(char* dest, const char* src, size_t n) {
assert(dest != NULL && src != NULL);
char* pDest = (char*)dest;
const char *pSrc = (const char*)src;
if (pDest <= pSrc || pSrc + n <= pDest) {
while (n--) {
*pDest++ = *pSrc++;
}
} else {
pDest += n - ;
pSrc += n - ;
while (n--) {
*pDest-- = *pSrc--;
}
}
} //memset内部实现memset(void*s,int ch,size_t n)
/*将dest所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值,返回s*/
void* Memset(void* dest, int ch, size_t n) {
assert(dest != NULL && n >= );
char* p = (char*)dest;
while (n--) {
*p++ = (char)ch;
}
return dest;
}
C关于字符串操作的库函数实现总结的更多相关文章
- C语言字符串操作常用库函数
C语言字符串操作常用库函数 *********************************************************************************** 函数 ...
- 实现C语言字符串操作的库函数 包括基本的字符串复制 字符串长度 字符串比较等多种函数(C代码)
头文件 "mystring.h" #ifndef _MYSTR_H #define _MYSTR_H #include <stdio.h> #include <s ...
- 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...
- C语言的本质(22)——C标准库之字符串操作
编译器.浏览器.Office套件等程序的主要功能都是符号处理,符号处理功能在程序中占相当大的比例,无论多复杂的符号处理都是由各种基本的字符串操作组成的,下面介绍如何用C语言的库函数做字符串初始化.取长 ...
- C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...
- 九度OJ 1206:字符串连接 (字符串操作)
时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:4127 解决:1957 题目描述: 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来. 输入: 每一行包括两个 ...
- C++字符串操作笔试题第二波
//1.字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成"%20". //比如输入"we are happy.".则输出"we%20are ...
- VC++ 字符串操作学习总结
vc++中各种字符串(转载) http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.html CString ,BSTR ,LPCTSTR之间 ...
- Java中的字符串操作(比较String,StringBuiler和StringBuffer)
一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己 ...
随机推荐
- luogu 1593 因子和 约数+线性筛
等比数列那里忘判项数等于 $1$ 的情况了. Code: #include <cstdio> #include <vector> #include <algorithm& ...
- angular打包(二):nw.js
1 npm build 把ng编译出dist 2 单独写一个package.json 放在dist文件夹里. { "name": "app", "ma ...
- MessagePack Java Jackson Dataformat - 安装
中文标题[MessagePack 的 Jackson 数据格式] 本页面中的所有示例程序,请到代码库 https://github.com/cwiki-us-demo/serialize-deseri ...
- 灰度图像--图像增强 Robert算子、Sobel算子
学习DIP第36天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...
- MySQL_(Java)使用JDBC向数据库中删除(delete)数据
MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...
- HDU 5894 hannnnah_j’s Biological Test ——(组合数)
思路来自于:http://blog.csdn.net/lzedo/article/details/52585170. 不过并不需要卢卡斯定理,直接组合数就可以了. 代码如下: #include < ...
- [CSP-S模拟测试]:B(DP+数学)
题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...
- oracle取出所有表和视图
select c.TABLE_NAME, d.COMMENTS, d.table_type, (select wmsys.wm_concat(a.column_name) from user_cons ...
- @configuration和@component之间的区别
@configuration和@component之间的区别是:@Component注解的范围最广,所有类都可以注解,但是@Configuration注解一般注解在这样的类上:这个类里面有@Value ...
- PHP 多条件查询(汽车表)
主页面: <h1>汽车查询页面</h1> <br /> <?php include("./DBDA.class.php"); $db = ...