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

时间:2023-02-16 21:17:25

一、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");
}

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

#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");
}

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

二、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");
}

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

四、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");
}

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

五、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");
}

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

六、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");
}

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

七、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");
}

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

八、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");
}

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

八、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");
}

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

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");
}

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

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");
}

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

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();
}

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

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等,以及常用内存函数

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

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

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

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

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

  3. Learning ROS for Robotics Programming Second Edition学习笔记&lpar;四&rpar; 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&lpar;&rpar;、strcat&lpar;&rpar;、strncat&lpar;&rpar;、strcmp&lpar;&rpar;、strncmp&lpar;&rpar;、strcpy&lpar;&rpar;、strncpy&lpar;&rpar; 详解

      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&colon;SQLServer常用系统函数-字符串函数、配置函数、系统统计函数

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

随机推荐

  1. 背水一战 Windows 10 &lpar;18&rpar; - 绑定&colon; 与 Element 绑定&comma; 与 Indexer 绑定&comma; TargetNullValue&comma; FallbackValue

    [源码下载] 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue 作者:weba ...

  2. jquery下拉菜单打开的同时&comma;同行右边的图标变化

    1.用bootstrap的折叠面板时,右侧的三角图标随菜单下拉而旋转90°: html代码 <a class="advanced-option" data-toggle=&q ...

  3. 【BZOJ】【1005】【HNOI2008】明明的烦恼

    Prufer序列/排列组合+高精度 窝不会告诉你我是先做了BZOJ1211然后才来做这题的>_>(为什么?因为我以前不会高精度呀……) 在A了BZOJ 1211和1089之后,蒟蒻终于有信 ...

  4. B&sol;S系统间跨域单点登录设计思路

    基于B/S系统间单点登录 此处说的单点登录的概念,即不同系统公用一个登录界面.一处系统通过登录验证,在接入的各系统均为登录状态.一般有两种情景: 1)  一级域名相同 例如:tieba.baidu.c ...

  5. 七个开法者经常忽略或误用的JavaScript基本知识

    七个开法者经常忽略或误用的JavaScript基本知识 翻译自 http://tech.pro/tutorial/1453/7-javascript-basics-many-developers-ar ...

  6. 我们是如何通过全球第一免费开源ERP Odoo做到项目100&percnt;交付

    传统友商ERP的交付过程 一.先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行 ...

  7. 图片转字符画 【学习ing】

    1.创建ascii.py 2. 下面是 ascii.py 的完整代码: from PIL import Image import argparse #命令行输入参数处理 parser = argpar ...

  8. web scraper——安装【一】

    准备工作 工欲善其事必先利其器,既然是要安装web scraper一些***的工具是必然不可缺少的,如果没有的话,先下载个蓝灯用用吧. 蓝灯最新版下载地址 下载安装完成后双击打开即可,这时候会弹出一个 ...

  9. SpringBoot实现标准的OAuth服务提供商

    ⒈添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...

  10. Vue&period;js连接后台数据jsp页面  ̄&bigtriangledown; ̄

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...