一、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. dbeaver导出MySQL的架构提示"IO Error: Utility 'mysqldump.exe' not found in client home 'MySQL Connector/Net"解决方案

    今天想到用dbeaver的Dump dabase功能导出MySQL的架构脚本,到最后一步生成的时候提示以下错误信息: IO Error: Utility 'mysqldump.exe' not fou ...

  2. 创建多线程Thread

    创建一个线程: # 方式一from threading import Thread import time def func(n): time.sleep(1) print(n) t = Thread ...

  3. javascript 缩写技巧

    19种JS高(炫)效(技)缩写法 https://segmentfault.com/a/1190000011229633

  4. eclipse反编译不起作用

    今天用eclipse安装反编译插件,分别按百度安装了好几个,但是都没起到作用.想想可能是因为我的eclipse是现在最新的版本,可能以前的方法不适用了,所以就自己折腾了一下.以下为教程: 1.首先我的 ...

  5. background-color:transparent

    background-color没有none值   在工作中发现, 这样是没反应的, 要写这个样式才能去掉背景颜色() background-color属性详细链接: http://www.w3sch ...

  6. 微信小程序开发笔记04

    今天将小程序的页面进行优化 消除昨天遇到的bug问题. 完成了微信小程序的开发.

  7. 基于 ASP.NET Core 2.1 的 Razor Class Library 实现自定义错误页面的公用类库

    注意:文中使用的是 razor pages ,建议使用 razor views ,使用 razor pages 有一个小坑,razor pages 会用到 {page} 路由参数,如果应用中也用到了这 ...

  8. gcd最大生成树模板

    出处: ACM International Collegiate Programming Contest, Egyptian Collegiate Programming ContestArab Ac ...

  9. day21:包和异常处理

    1,复习 # 序列化模块 # json # dumps # loads # dump 和文件有关 # load load不能load多次 # pickle # 方法和json的一样 # dump和lo ...

  10. Chrome扩展程序——TabCopy:一键复制网页标题和网址

    Chrome扩展程序——TabCopy:一键复制网页标题和网址 - Erik_ly的博客 - CSDN博客 https://blog.csdn.net/u012318074/article/detai ...