一、strncat及自行封装实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //<string.h>是C版本的头文件,包含比如strcpy、strcat之类的字符串处理函数。
//<cstring>是C++版本的<string.h>
//<string>定义了一个string的字符串类,包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。
//但<string>又包含了老的C版本的字符串操作如strcpy、strcat等 void main() {
char str[] = "yincheng";
char str1[] = "8848.88";
strncat(str, str1, );//从str1中拷贝4个字节到str
printf("%s\n", str);
system("pause");
}

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h> void mystrncat(char *bc, char *c, int length)
{
if (bc == NULL || c == NULL || length == )
return;
char *p = bc;
while (*p)
p++;
//循环结束后,p指向了字符串的末端'\0'
for (int i = ; i < length; i++)
{
*p = c[i];
p++;
}
*p = '\0';
} void main() {
char str[] = "task";
char str1[] = "list8848.88";
mystrncat(str, str1, );
printf("%s\n", str);
system(str);
system("pause");
}

二、atoi

#include<stdio.h>
#include<stdlib.h> void main() {
char str[] = "88e48";
//int num = atoi(str);//8848
//int num = atoi(str+1);//
int num = atoi(str);// char s1[] = "88e48";
//int n1 = atoi(s1);//
int n1 = atoi(s1+);// char s2[] = "e8848";
//int n2 = atoi(s2);//
int n2 = atoi(s2 + );// printf("%d\n", n2);
system("pause");
}

三、strrev(字符串逆转)

#include<stdio.h>
#include<stdlib.h>
#include<string.h> void mystrrev(char *p) {
int length = strlen(p);//获取字符串长度
for (int i = ; i < length/; i++)//length必须除以2,不然字符对调之后又调回去了
{
char temp = p[i];
p[i] = p[length - - i];
p[length - - i] = temp;
}
} void main() {
char str[] = "yincheng8848a";
printf("原来字符串 %s\n", str);
//_strrev(str);
mystrrev(str);
printf("后来字符串 %s\n", str);
system("pause");
}

四、strupr和strlwr(大小写转换)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h> void tobig(char *p) {
while (*p)
{
if ((*p)>= 'a'&&(*p) <= 'z')
*p -= ;
p++;
}
} void main() {
char str[] = "notepad";
//_strupr(str);//小写转大写
//toupper用法; #include<cctype> ch = toupper(ch);//ch是一个字符
tobig(str);
printf("%s\n", str); char str1[] = "TASKLIST";
_strlwr(str1);//大写转小写
printf("%s\n", str1); system("pause");
}

五、strlen

#include<stdio.h>
#include<stdlib.h>
#include<string.h> int mystrlen(char *p) {
int i = ;
while (*p) {
i++;
p++;
}
return i;
} void main() {
char str[] = "i love iphone";//str是变量
char *p = "i love china";//常量
int len1 = strlen(str);
int len2 = mystrlen(p); printf("str=%d,p=%d\n",len1,len2); system("pause");
}

六、strcat(字符串拼接)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h> char * mystrcpy(char *dst,char *src) {
char *p = dst;
if (dst == NULL || src == NULL)
return NULL;
while (*src) {
*dst = *src;
dst++;
src++;
}
*dst = '\0';
return p;
} char * mystrcat(char *dst, char *src) {
char *p = dst;
if (dst == NULL || src == NULL)
return NULL;
while (*dst)
dst++;
while (*src) {
*dst = *src;
dst++;
src++;
}
*dst = '\0';
return p;
} void main() {
char str1[] = "note";
char str2[] = "pad";
char str[];
printf("%s\n", mystrcpy(str, str1));
//mystrcpy(str, str1);//复制
printf("%s\n", str);
//strcat(str, str2);//拼接
mystrcat(str, str2);//拼接
printf("%s\n", str);
system(str);
} void main0() {
char str1[] = "note";
char str2[] = "pad";
char str[];
sprintf(str, "%s%s", str1, str2);
system(str);
system("pause");
}

七、strchr(查找某字符是否在字符串中)

#include<stdio.h>
#include<stdlib.h>
#include<string.h> char * mystrchr(char *dst,char ch) {
if (dst == NULL)
return NULL;
while (*dst) {
if (*dst == ch)
return dst;
dst++;
}
return NULL;
} void main() {
char str[] = "i love china";
char ch='o';
/*char *p = strchr(str, ch);*/
char *p = mystrchr(str, ch);
if(p==NULL)
printf("没找到\n");
else
printf("值%c,地址%x\n",*p,p); system("pause");
}

八、strcmp(比较两字符串是否相等)

#include<stdio.h>
#include<stdlib.h>
#include<string.h> int mystrcmp(char *p1,char *p2) {
int l1 = strlen(p1);
int l2 = strlen(p2);
if (l1 != l2)
return -;
else {
for (;*p1;p1++,p2++)
{
if (*p1 != *p2)
return -;
}
}
return ;
} void main() {
char str1[] = "note";
char str2[] = "note";
/*if (strcmp(str1,str2)==0)*/
if (mystrcmp(str1, str2) == )
printf("相等\n");
else
printf("不相等\n");
system("pause");
} void main0() {//无论相等还是不等,都输出不等
char str1[] = "note";
char str2[] = "note";
if(str1==str2)//c语言判断字符串不能这样
printf("相等\n");
else
printf("不相等\n");
system("pause");
}

实现排序

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h> void main() {
char str[][] = {"apple","google","IBM","Intel","Microsoft","baidu","ali","tencent","","Sun"};
printf("排序之前\n");
for (int i = ; i < ; i++)
printf("%s\n", str[i]);
printf("排序之后\n");
//冒泡排序
for (int i = ; i < -; i++)
{
for (int j = ; j < - - i; j++)
{
if (strcmp(str[j], str[j+]) > ) {
//交换字符串,不可以用赋值号
char temp[];
strcpy(temp, str[j]);
strcpy(str[j],str[j+]);
strcpy(str[j+],temp);
}
}
}
for (int i = ; i < ; i++)
{
printf("%s\n", str[i]);
} system("pause");
}

八、strstr(在字符串中查找是否包含另一个字符串)

#include<stdio.h>
#include<stdlib.h>
#include<string.h> char * mystrstr(char *allstr,char *str) {
if (allstr == NULL || str == NULL)
return NULL;
int all_len = strlen(allstr);
int str_len = strlen(str);
for (int i = ; i <all_len-str_len+; i++)
{
int flag = ;//标示,假定字符串一开始相等
for (int j = ; j <str_len; j++)
{
if (allstr[i + j] != str[j]) {
flag = ;
break;
}
}
if (flag)
return allstr+i; //返回找到的地址
}
return NULL;
} void main() {
char allstr[] = "i love china i love cpp";
char str[] = "china";
//char *p = strstr(allstr, str);//检索
char *p = mystrstr(allstr, str);//检索
if(p==NULL)
printf("没找到\n");
else
printf("值%c,地址%x\n",*p,p);
system("pause");
}

九、常用内存函数

1.memset

#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<memory.h>//内存操作函数 void main() {
char str[] = "i love china i love c i love cpp";
//第一个参数是内存的首地址,第二个参数是要设置的字符
//第三个参数是整数,从首地址开始前进多少字节,把这一段设置为该字符
memset(str, 'A', );
printf("%s\n",str);
memset(str, 'A', );
printf("%s\n", str);
memset(str, '\0',strlen(str));//清空字符串
printf("%s\n", str);
system("pause");
}

2.memcpy

#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<memory.h>//内存操作函数 void main0() {
char str[] = "yincheng8848";
char str1[] = "hello c";
printf("%s\n", str);
//memcpy:从地址str开始,从str1处拷贝5个字节到str
memcpy(str,str1,);
printf("%s\n",str); system("pause");
} void main() {
int a[] = { ,,,, };
int b[] = { ,,,, };
memcpy(a,b, );//每个元素4个字节,两个元素8个字节
//memcpy按照内存字节来拷贝,不管是什么类型,都是拷贝二进制类型
for (int i = ; i < ; i++)
{
printf("%d\n",a[i]);
}
system("pause");
}

3.memccpy

#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<memory.h>//内存操作函数 void main() {
char str[] = "yincheng8848";
char str1[] = "hello c";
printf("%s\n", str);
_memccpy(str,str1,'l',);
//memccpy:如果str1没有字符‘l’,就等价于memcpy,读取7个字符拷贝到str
//如果有,读取拷贝到该字符就停止
printf("%s\n",str); system("pause");
}

4.memchr

#include<stdio.h>
#include<memory.h> void main() {
char str[] = "helloyincheng";
char ch='c';
char *p =(char *) memchr(str, 'c', );
//从地址str开始,前进30个字节检索
//如果存在,返回地址,否则返回空
if (p == NULL)
printf("没找到\n");
else
printf("找到字符%c,地址%p", *p, p);
getchar();
}

5.memicmp

#include<stdio.h>
#include<stdlib.h>
#include<memory.h> void main() {
char *buf1 = "ABCDE123";
char *buf2 = "abcde456";
int num = _memicmp(buf1, buf2, );
//memicmp判断字符串前面几个字节是否相等
//忽略大小写,相等返回0,反之非0
if (num == )
printf("忽略大小写的情况下,相等");
else
printf("不等"); getchar();
}

[c/c++] programming之路(23)、字符串(四)——strncat,atoi,strcmp,strlen等,以及常用内存函数的更多相关文章

  1. Python之路【第四篇】: 函数、递归、内置函数

    一. 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 while True: i ...

  2. GO语言的进阶之路-Golang字符串处理以及文件操作

    GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ...

  3. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  4. Python之路,第四篇:Python入门与基础4

    Python3 字符串 字符串是一个有序的字符序列 如何表示一个字符串: 在非注释中凡是用引号括起来的部分都是字符串: ‘  单引号     ”  双引号      ‘’‘  三单引号    “”“ ...

  5. 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成

    孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...

  6. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

  7. Linux C 字符串函数 strlen()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy() 详解

      strlen(返回字符串长度) 表头文件 #include <string.h> 定义函数 size_t strlen(const char *s); 函数说明 strlen()用来计 ...

  8. 【C语言】10-字符和字符串常用处理函数

    一.字符处理函数 下面介绍的两个字符处理函数都是在stdio.h头文件中声明的. 1.字符输出函数putchar putchar(65); // A putchar('A'); // A int a ...

  9. ylb:SQLServer常用系统函数-字符串函数、配置函数、系统统计函数

    原文:ylb:SQLServer常用系统函数-字符串函数.配置函数.系统统计函数 ylbtech-SQL Server:SQL Server-SQLServer常用系统函数 -- ========== ...

随机推荐

  1. phantomjs 是什么?----主要是mac下面

    phantomjs 是什么? PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎.它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG. pha ...

  2. Windows下安装配置Yaf框架的方法及创建典型合理的Demo目录结构

    Yaf是一个C语言编写的PHP框架,由鸟哥Laruence开发的高性能框架: Yaf官方文档:http://www.laruence.com/manual/index.html 第一步:安装PHP扩展 ...

  3. 七牛免费SSL证书申请全流程

    购买证书 在七牛ssl 首页点击购买 购买限免证书 补全订单信息 免费证书,随意填写,问题不大 购买成功,查看订单详情,获取 TXT 值信息 添加 DNS TXT 验证 根据上一步,查看证书订单详情, ...

  4. 30、git 使用

    Git 一. 目标 (一) Git的操作 二. Git和SVN的区别 (一) SVN优缺点 1. 优点: (1) 管理方便,逻辑明确 (2) 易于管理,集中式服务器更能保证安全性 (3) 代码一致性非 ...

  5. super方法 调用父类的方法

    描述 super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重复 ...

  6. C#在WinForm下使用HttpWebRequest上传文件

    转自:http://blog.csdn.net/shihuan10430049/article/details/3734398 这段时间因项目需要,要实现WinForm下的文件上传,个人觉得采用FTP ...

  7. PHP(一般标签介绍,标签特性,实体名称,绝对路径与相对路径)

    h1:为标题  h1~h6 标题会逐渐变小 需更换标签里面的数字 如: <h1>这是标题123</h1>---标题 <h2>这是标题123</h2>-- ...

  8. 概率DP求解例题

    1,逆推状态:山东省赛2013年I题 Problem I: The number of steps Description Mary stands in a strange maze, the maz ...

  9. hadoop-1.0.1根目录下的jar包

  10. 点击刷新验证码所需要的onclick函数

    <img src="__APP__/Public/verify" onclick="this.src=this.src+'?'+Math.random()" ...