C语言中操作字符串的函数

2023-05-16

C语言中操作字符串的函数

  • 一、函数表
  • 二、strlen
    • 实例
    • 运行结果
  • 三、strcmp
    • 实例
    • 运行结果
  • 四、strcpy
    • 实例
    • 运行结果
  • 五、stract
    • 实例
    • 运行结果
  • 六、strchr
    • 实例
    • 运行结果
  • 七、strstr

一、函数表

函数名函数功能
strlensize_t strlen(const char* s);返回字符串 s 的长度(不包括结尾的0)
strcmpint strcmp(const char* s1, const char* s2);比较两个字符串,返回:如果 s1 == s2,返回 0;如果 s1<s2 则返回小于 0 (如 -1);如果 s1>s2 则返回大于 0 (如 1)
strcpychar* strcpy(char* restrict dst, const char* reestrict src)把字符串 src 复制拷贝到字符串 dst,返回 dst,restrict 表明 src 和 dst 不能重叠
strcatchar* stract(char* restrict s1, const char* reestrict s2)把字符串 s2 拷贝到字符串 s1 的后面,连接成一个长的字符串,返回 s1
strchrchar* strchr(const char* s, int c)返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置
strstrchar* strstr(const char* s1, const char* s2)返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置

二、strlen

实例

#include <stdio.h>
#include <string.h>

//自定义 strlen()函数
size_t mylen(const char* s)
{
	int idx = 0;
	while (s[idx] != '\0') {
		idx++;
	}
	return idx;
}

int main()
{
	char a[] = "Hello";
	printf("mylen=%llu\n", mylen(a));
	printf("strlen=%llu\n", strlen(a));// {'H', 'e', 'l', 'l', 'o'};
	printf("sizeof=%llu\n", sizeof(a));// {'H', 'e', 'l', 'l', 'o','\0'};

	return 0;
}

运行结果

在这里插入图片描述

三、strcmp

实例

#include <stdio.h>
#include <string.h>

//自定义 strcmp()函数
int mycmp1(const char* s1, const char* s2)
{
	int idx = 0;
	while (1) {
		if (s1[idx] != s2[idx]) {
			break;
		}
		else if (s1[idx] == '\0') {
			break;
		}
		idx++;
	}
	return s1[idx] - s2[idx];
}
int mycmp2(const char* s1, const char* s2)
{
	int idx = 0;
	while (s1[idx] == s2[idx] && s1[idx] != 0) {
		idx++;
	}
	return s1[idx] - s2[idx];
}
int mycmp3(const char* s1, const char* s2)
{
	int idx = 0;
	while (*s1 == *s2 && *s1 != 0) {
		s1++;
		s2++;
	}
	return *s1 - *s2;
}

int main()
{
	char s1[] = "abc";
	char s2[] = "abc";
	char s3[] = "abc ";
	char s4[] = "bbc";
	char s5[] = "Abc";

	printf("mycmp1=%d\n", mycmp1(s1, s2));
	printf("mycmp2=%d\n", mycmp2(s1, s3));
	printf("mycmp3=%d\n", mycmp3(s1, s4));
	printf("mycmp3=%d\n", mycmp3(s1, s5));

	printf("strlen=%d\n", strcmp(s1, s2));
	printf("strlen=%d\n", strcmp(s1, s3));
	printf("strlen=%d\n", strcmp(s1, s4));
	printf("strlen=%d\n", strcmp(s1, s5));

	return 0;
}

运行结果

VS编辑器的原因,库函数 strlen 的结果只有 0, -1, 1 三种结果
在这里插入图片描述

四、strcpy

// 复制一个字符串
char* dst = (char*)malloc(strlen(src)+1);
strcpy(dst,src);
// strlen 查 src 大小 +1 (+1 的原因是加上字符串最后的 ‘\0’, strlen 读取的长度不包括 ‘\0’), 再 malloc 分配空间给 dst, 这样 dst 的空间正好等于 src, 然后再执行 strcpy 复制操作

实例

#include <stdio.h>
#include <string.h>

//自定义 strcpy()函数
char* mycpy1(char* dst, const char* src)
{
	int idx = 0;
	while (src[idx] != '\0') {
		dst[idx] = src[idx];
		idx++;
	}
	dst[idx] = '\0';
	return dst;
}
char* mycpy2(char* dst, const char* src)
{
	char* ret = dst;
	while (*src) {
		*dst++ = *src++;
	}
	*dst = '\0';
	return ret;
}

int main()
{
	char s1[] = "abc";
	char s2[] = "def";
	char s3[] = "ghi";
	char s4[] = "jkl";
	printf("s1=%s\n", s1);
	strcpy(s1, s2);
	printf("s1=%s\n", s1);
	mycpy1(s1, s3);
	printf("s1=%s\n", s1);
	mycpy2(s1, s4);
	printf("s1=%s\n", s1);

	return 0;
}

运行结果

在这里插入图片描述

五、stract

实例

#include <stdio.h>
#include <string.h>

int main()
{
	char s1[10] = "abc";
	char s2[] = "def";
	printf("s1=%s\n", s1);
	strcat(s1, s2);
	printf("s1=%s\n", s1);

	return 0;
}

运行结果

在这里插入图片描述

六、strchr

实例

#include <stdio.h>
#include <string.h>

int main()
{
	char s1[10] = "abcdebcde";
	printf("%p\n", s1);
	printf("%p\n", s1 + 1);
	char* p = strchr(s1, 'b');
	printf("%s\n", p);
	printf("%p\n", p);

	return 0;
}

运行结果

在这里插入图片描述

七、strstr

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言中操作字符串的函数 的相关文章

随机推荐

  • 计算机二级-C语言-软件工程基础

    软件是程序 数据和文档的集合 计算机软件是由程序 数据及相关文档构成的完整集合 程序是指软件开发人员依据用户需求开发的 用某种程序设计语言描述的 能够在计算机中执行的语句序列 数据是使程序能够正常操纵信息的数据结构 文档是指与程序开发 维护
  • Visual Studio创建C语言编程环境

    Visual Studio创建C语言编程环境 1 启动 visual studio2 创建新项目3 配置新项目4 创建源文件5 添加新项 1 启动 visual studio 将 visual studio 添加到桌面或任务栏 xff0c
  • 浏览器打开收藏夹中书签的各种方法

    1 左键单击 左键单击 61 在当前窗口打开目标网页 2 Shift 43 左键单击 Shift 43 左键单击 61 在新窗口打开目标网页 3 Ctrl 43 左键单击 Ctrl 43 左键单击 61 在新标签页打开目标网页
  • C语言知识总结:a++ 与 ++a 的区别、return 0和return 1的区别、逗号表达式计算规则、数据类型占用字节数、赋值运算符

    C语言知识总结 一 C语言中a 43 43 与 43 43 a 的区别二 C语言中return 0和return 1的区别三 逗号表达式计算规则四 常用基本数据类型占用空间 xff08 64位机器为例 xff09 五 C语言中的赋值运算符
  • C语言printf()函数

    函数printf 中 xff0c md指输出带符号的十进制整数 xff0c 给定最小宽度为m位 xff0c 不足m位左端补空格 xff0c 超过m位按实际位数输出 xff0c m nf表示以小数形式输出实数 xff0c 最小宽度为m位 xf
  • 栈和队列知识点总结

    栈和队列知识点总结 一 栈 入栈与出栈二 循环队列 入队与出队三 栈的存储空间为S 1 m xff0c 初始状态为top 61 m 43 1四 带链的栈和带链的队列五 线性链表 存储空间不连续六 线性结构与非线性结构 判断准则 一 栈 入栈
  • 原码、反码和补码

    1 原码 原码就是符号位加上真值的绝对值 即用第一位表示符号 其余位表示值 比如如果是8位二进制 xff1a span class token punctuation span span class token operator 43 sp
  • Win10点击声音图标打不开音量调节的解决方法

    Win10点击声音图标打不开音量调节 一 问题描述二 解决方法 一 问题描述 Win10系统声音图标显示正常 xff0c 但是点击声音图标无法打开音量调节 二 解决方法 快捷键 Win 43 X 43 T 或鼠标右击任务栏打开任务管理器 找
  • C语言中exit(0) 、exit(1) 和return的区别

    C语言中的exit 文字描述代码验证return 表示返回 xff0c 函数返回exit 表示程序退出exit 0 表示正常退出 xff0c 代码为1exit 1 表示异常退出 xff0c 代码为1 文字描述 return是语言级别的 xf
  • 数组的地址、指针的使用、数组名加1的含义、数组的集成初始化、数组的大小、数组的赋值

    数组与指针 一 数组的地址实例1运行结果实例2运行结果 二 指针的使用实例1运行结果实例2运行结果 三 数组名加1的含义实例1运行结果实例2运行结果 四 数组的集成初始化实例1运行结果实例2运行结果实例3运行结果 五 数组的大小实例运行结果
  • 感想京东

    xfeff xfeff 现在网上购物已经是家常便饭 xff0c 大多数人们都已接受了网购这种方式 xff0c 而能够给人们提供网购的网站也很多 xff0c 而我从好几年前就开始在京东网购物了 xff0c 因此京东商城的每一次发展 xff0c
  • 指针常量与常量指针的区别、const 数组

    指针常量与常量指针 const 数组 一 指针常量指针本身是常量 二 常量指针指向常量的指针 三 实例四 const 数组 一 指针常量 指针本身是常量 span class token comment 指针本身不能被修改 span spa
  • 动态内存的分配

    实例 span class token macro property span class token directive keyword include span span class token string lt stdio h gt
  • 指向数组的指针

    实例 span class token macro property span class token directive keyword include span span class token string lt stdio h gt
  • 指针数组的含义

    实例1 span class token macro property span class token directive keyword include span span class token string lt stdio h g
  • 二维数组的使用

    实例1 二维数组遍历 span class token macro property span class token directive keyword include span span class token string lt st
  • C语言scanf()函数

    scanf 函数输出格式为 xff1a flags type scanf 函数从输入设备按照指定的类型输入对应类型的若干个数据 xff0c 遇到空格 制表符和回车时 xff0c 读取结束 和字母中间的数字表示最多允许读入的数量 scanf
  • 字符数组与字符串

    字符数组与字符串 一 字符串实际上是使用空字符 39 0 39 结尾的一维字符数组 二 字符数组实例运行结果 三 字符串实例运行结果 四 字符串的定义如果要构造一个字符串 用指针定义如果要处理一个字符串 用数组定义实例运行结果 五 字符串赋
  • C语言的输入、输出

    C语言的输入与输出 一 scanf 和 printf 函数实例运行结果 二 getchar 和 putchar 函数实例1运行结果实例2运行结果 三 gets 和 puts 函数实例运行结果 一 scanf 和 printf 函数 实例 s
  • C语言中操作字符串的函数

    C语言中操作字符串的函数 一 函数表二 strlen实例运行结果 三 strcmp实例运行结果 四 strcpy实例运行结果 五 stract实例运行结果 六 strchr实例运行结果 七 strstr 一 函数表 函数名函数功能strle