[c/c++] programming之路(23)、字符串(四)——strncat,atoi,strcmp,strlen等,以及常用内存函数
一、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等,以及常用内存函数的更多相关文章
- Python之路【第四篇】: 函数、递归、内置函数
一. 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 while True: i ...
- GO语言的进阶之路-Golang字符串处理以及文件操作
GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Python之路,第四篇:Python入门与基础4
Python3 字符串 字符串是一个有序的字符序列 如何表示一个字符串: 在非注释中凡是用引号括起来的部分都是字符串: ‘ 单引号 ” 双引号 ‘’‘ 三单引号 “”“ ...
- 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成
孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- Linux C 字符串函数 strlen()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy() 详解
strlen(返回字符串长度) 表头文件 #include <string.h> 定义函数 size_t strlen(const char *s); 函数说明 strlen()用来计 ...
- 【C语言】10-字符和字符串常用处理函数
一.字符处理函数 下面介绍的两个字符处理函数都是在stdio.h头文件中声明的. 1.字符输出函数putchar putchar(65); // A putchar('A'); // A int a ...
- ylb:SQLServer常用系统函数-字符串函数、配置函数、系统统计函数
原文:ylb:SQLServer常用系统函数-字符串函数.配置函数.系统统计函数 ylbtech-SQL Server:SQL Server-SQLServer常用系统函数 -- ========== ...
随机推荐
- phantomjs 是什么?----主要是mac下面
phantomjs 是什么? PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎.它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG. pha ...
- Windows下安装配置Yaf框架的方法及创建典型合理的Demo目录结构
Yaf是一个C语言编写的PHP框架,由鸟哥Laruence开发的高性能框架: Yaf官方文档:http://www.laruence.com/manual/index.html 第一步:安装PHP扩展 ...
- 七牛免费SSL证书申请全流程
购买证书 在七牛ssl 首页点击购买 购买限免证书 补全订单信息 免费证书,随意填写,问题不大 购买成功,查看订单详情,获取 TXT 值信息 添加 DNS TXT 验证 根据上一步,查看证书订单详情, ...
- 30、git 使用
Git 一. 目标 (一) Git的操作 二. Git和SVN的区别 (一) SVN优缺点 1. 优点: (1) 管理方便,逻辑明确 (2) 易于管理,集中式服务器更能保证安全性 (3) 代码一致性非 ...
- super方法 调用父类的方法
描述 super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重复 ...
- C#在WinForm下使用HttpWebRequest上传文件
转自:http://blog.csdn.net/shihuan10430049/article/details/3734398 这段时间因项目需要,要实现WinForm下的文件上传,个人觉得采用FTP ...
- PHP(一般标签介绍,标签特性,实体名称,绝对路径与相对路径)
h1:为标题 h1~h6 标题会逐渐变小 需更换标签里面的数字 如: <h1>这是标题123</h1>---标题 <h2>这是标题123</h2>-- ...
- 概率DP求解例题
1,逆推状态:山东省赛2013年I题 Problem I: The number of steps Description Mary stands in a strange maze, the maz ...
- hadoop-1.0.1根目录下的jar包
- 点击刷新验证码所需要的onclick函数
<img src="__APP__/Public/verify" onclick="this.src=this.src+'?'+Math.random()" ...
