字符串函数

C++中常用的字符串函数 C++语言提供了比C语言更丰富的字符串处理功能。它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作。使用这些现成的功能可以大大减少我们的编程的负担。 输入和输出的字符串函数,如printf,puts,cout,scanf,gets,cout等,在使用时应包含头文件cstdio,并使用其他字符串函数包含头文件cstring。 cstr... 阅读详情

前言

字符串就是一串零个或多个字符,以一个ASCIIC码为0的‘\0’字符结尾,\0是字符串的终止符,它并不是字符串的一部分。语言中对字符和字符串的处理很是频繁,但是C语言本身是没有显式的字符串数据类型的,因为字符串通常以字符串常量的形式出现或者存储于字符数组中。字符串常量适用于那些对它不做修改的字符串函数。

头文件string.h包含了字符串函数所需的原型和声明。


库函数介绍和模拟实现

求字符串长度的字符串函数

strlen

  • 函数功能:求一个字符串的长度,就是它所包含的字符个数(不包括\0)。

  • 函数原型

size_t strlen(const char* string);
  • 模拟实现
#include<stdio.h>
#include<assert.h>//断言所需头文件

size_t my_strlen(const char* str)
{
	assert(str);//断言
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

int main()
{
	char str[20] = "hello world";
	int len = my_strlen(str);
	printf("%d\n", len);
	return 0;
}

  • 注意事项
  1. 参数指向的字符串必须要以 ‘\0’ 结尾。

  2. 注意函数的返回值为size_t,是无符号的( 易错 )

#include <stdio.h>
#include <string.h> //如果不包含头文件可能会得到相反的结果
int main()
{
     const char*str1 = "abcdef";
     const char*str2 = "bbb";
     if(strlen(str2)-strlen(str1)>0)//结果为无符号数,永远大于等于0
     {
     	printf("str2>str1\n");
     } 
     else
     {
     	printf("srt1>str2\n");
     }
     return 0;
}

长度不受限制的字符串函数

最常用的字符串函数都是“不受限制”的,就是说它们只是通过寻找字符串参数结尾的\0来判断字符串的长度。

strcpy

  • 函数功能:

把参数src字符串复制到参数dest,如果这两个参数在内存中出现重叠,其结果是未定义的。

  • 函数原型
char* strcpy(char* dest, const char* src);

返回目标字符数组的首地址

  • 模拟实现
#include<stdio.h>
#include<assert.h>//断言所需头文件

char* my_strcpy(char* dest, const char* sorc)
{
	char* ret = dest;
	assert(dest);
	assert(sorc);
	while (*dest++ = *sorc++)
	{
		;
	}
	return ret;
}

int main()
{
	char str1[20] = "xxxxxxxxxxxx";
	char str2[10] = "hello";
	printf("%s\n", my_strcpy(str1, str2));//链式访问
	return 0;
}

  • 注意事项
  1. 必须保证目标字符数组的空间能够容纳需要复制的字符串,否则将覆盖数组后面的内存空间。
  2. 源字符串必须以 ‘\0’ 结束,以便能够结束拷贝。
  3. 会将源字符串中的 ‘\0’ 拷贝到目标空间

strcat

  • 函数功能:把一个字符串连接到另一个字符串的后面。strcat函数找到dest参数字符串的末尾,并将src字符串的一份拷贝添加到这个位置,如果src和dest的位置发生重叠,其结果是未定义的。

  • 函数原型

char* strcat(char* dest, const char* src);

返回目标字符数组的首地址

  • 模拟实现
#include<stdio.h>
#include<assert.h>//断言所需头文件

char* my_strcat(char* dest, const char* sorc)
{
	assert(dest);
	assert(sorc);
	char* ret = dest;
	while (*dest) //找到目标字符串末尾
	{
		dest++;
	}
	while (*dest++ = *sorc++)//开始字符串拷贝
	{
		;
	}
	return ret;
}

int main()
{
	char str1[20] = "xxxxx";
	char str2[10] = "hello";
	printf("%s\n", my_strcat(str1, str2));
	return 0;
}
  • 注意事项
  1. 源字符串必须以 ‘\0’ 结束。

  2. 目标空间必须有足够的大,能容纳下源字符串的内容。

strcmp

  • 函数功能:对两个字符串对应的字符逐个进行比较(比较ASCII码值),直到发现不匹配为止。

第一个字符串大于第二个字符串,则返回大于0的数字

第一个字符串等于第二个字符串,则返回0

第一个字符串小于第二个字符串,则返回小于0的数字

  • 函数原型
int strcmp(const char* str1, const char* str2);
  • 模拟实现
#include<stdio.h>
#include<assert.h>//断言所需头文件

int my_strcmp(const char* str1, const char* str2)
{
	assert(str1);
	assert(str2);
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
			return 0;
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

int main()
{
	char str1[10] = "abcd";
	char str2[10] = "abcd";
	printf("%d\n", my_strcmp(str1, str2));
	return 0;
}
  • 注意事项
  1. 不要写出下面的表达式
if(strcmp(a, b))

误认为两个字符串相等,结果会是真,事实恰恰相反

  1. 不要误以为返回值只有1,0,-1

长度受限制的字符串函数

这些函数接受一个显式的长度参数,用于限定进行复制或比较的字符个数。

strncpy

  • 函数功能:拷贝num个字符从源字符串到目标空间(结果不会包含\0)。

    如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加\0,直到num个。

  • 函数原型

char* strncpy(char* dest, const char* src, size_t num);
  • 模拟实现
char* my_strncpy(char* dest, const char* src, size_t num)
{
	char* ret = dest;
	assert(dest && src);
	while (num--)
	{
		if (*dest = *src)
		{
			dest++;
			src++;
		}
		else
		{
			dest++;
		}
	}
	return ret;
}

int main()
{
	char dest[20] = "xxxxxxxxxxxxxx";
	char src[10] = "hello";
	printf("%s\n", my_strncpy(dest, src, 7));
	return 0;
}

strncat

  • 函数功能:将源字符串的前num个字符附加到目标字符串,加上一个终止空字符\0。
    如果源字符串中字符串的长度小于num,则只复制直到终止符空字符的内容。

在这里插入图片描述

  • 函数原型
char* strncat(char* dest, const char* src, size_t num);
  • 模拟实现
char* my_strncat(char* dest, const char* src, size_t num)
{
	assert(dest && src);
	char* ret = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	while (num--)
	{
		*dest = *src;
		if (*src == '\0')
			return ret;
		dest++;
		src++;
	}
	*dest = '\0';
	return ret;
}

int main()
{
	char dest[20] = "hello\0xxxxxxxxx";
	char src[10] = "world";
	printf("%s\n", my_strncat(dest, src, 7));
	return 0;
}

strncmp

  • 函数功能:最多比较两个字符串num个字符

  • 函数原型

int strncmp(const char* str1, const char* str2, size_t num);

字符串查找函数

strstr

  • 函数功能:在str1中查找整个str2第一次出现的位置,并返回指向该位置的指针,如果没找到就返回空指针。

  • 函数原型

char* strstr(const char* str1, const char* str2);
  • 模拟实现
#include<stdio.h>
#include<assert.h>//断言所需头文件

char* my_strstr(const char*str1, const char*str2)
{
	assert(str1);
	if (str2 == NULL)
	{
		return str1;
	}
	char* ret = str1;
	while (ret)
	{
		char* s1 = ret;
		char* s2 = str2;
		while (*s1 && *s2 && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
			return ret;
		else if (*s1 == '\0')
			return NULL;
		ret++;
	}
	return NULL;
}

int main()
{
	char str1[10] = "abcdbbab";
	char str2[10] = "abb";
	printf("%s\n", my_strstr(str1, str2));
	return 0;
}

strtok

  • 函数功能:字符串分割,把一个字符串按照分割标志分割为几个字符串。

  • 函数原型

char* strtok(char* string, const char* sep);
  1. sep参数是个字符串,定义了用作分隔符的字符集合

  2. 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标

记。

  1. strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。

  2. strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串

中的位置。

  1. strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标

记。

  1. 如果字符串中不存在更多的标记,则返回 NULL 指针。
  • 函数使用

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

int main()
{
	char email[] = "1234567890@qq.com";
    char* sep = "@.";
	char tmp[20] = "";
	//由于strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都会临时拷贝一份,操作拷贝的数据
	strcpy(tmp, email);
	printf("%s\n", strtok(tmp, sep));  //第一次第一个参数传递被切割字符串的首地址
	printf("%s\n", strtok(NULL, sep));   //第二次及以后第一个参数传递空指针(strtok会记住上一次切割的位置)
	printf("%s\n", strtok(NULL, sep));
	return 0;
}

当我们不知道目标字符串的内容时,我们就不知道调用几次strtok,但我们可以利用for循环的判断条件来限制调用strtok函数的次数,同时我们知道,strtok函数第一次调用时需要传递目标字符串的地址,其余调用都只需要传递NULL即可,那我们可以把第一次调用当作for循环的初始化条件,一箭双雕。

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

int main()
{
	char str[20] = "you.know@who,I am";
	char sep[10] = ".@, ";
	char temp[20] = { 0 };//临时拷贝
	strcpy(temp, str);
	for (char* ret = strtok(temp, sep); ret != NULL; ret = strtok(NULL, sep))
	{
		printf("%s\n", ret);
	}
	return 0;
}

错误信息报告

strerror

  • 函数功能:C语言有一系列的库函数,当这些库函数调用失败时,会返回相应的错误码,操作系统把错误码存在一个外部的整型变量errno中的,而strerror函数的作用就是获取错误码对应的错误信息的首地址,使用者可以通过这个地址把错误信息打印出来。

  • 函数原型

char* strerror(int error_number);
  • 函数使用
#include <stdio.h>
#include <string.h>
#include <errno.h>//必须包含的头文件

int main ()
{
  FILE * pFile;
  pFile = fopen ("unexist.ent","r");
  if (pFile == NULL)
    printf("Error opening file unexist.ent: %s\n",strerror(errno));
  return 0;
}
printf("Error opening file unexist.ent: %s\n",strerror(errno));
等价于
perror("Error opening file unexist.ent: ") //自动获取错误码,自动打印错误信息,省时又省心

字符函数

使用字符函数的程序比那些自己执行字符测试和转换的程序更具有移植性。

字符分类函数

isspace空白字符:空格‘ ’,换页‘\f’,换行’\n’,回车‘\r’,制表符’\t’或者垂直制表符’\v’
isdigit十进制数字 0~9
isxdigit十六进制数字,包括所有十进制数字,小写字母a~f, 大写字母A~F
islower小写字母a~z
isupper大写字母A~Z
isalpha小写字母a~z 或大写字母A~Z
isalnum字母或者数字,a~z, A~Z, 0~9

字符转换函数

int tolower(int c)返回对应小写字母的ASCII值
int toupper(int c)返回对应大写字母的ASCII值

内存操作函数

根据定义,字符串由一个\0字符结尾,所有字符串内部不能包含任何\0字符。但是非字符串类型的数据内部包含零值的情况并不少见,你无法用字符串函数来处理这类数据,不过我们可以使用另外一组相关的函数,它们的操作和字符串函数类似,但是这些函数能够处理任意类型的数据。

memcpy

  • 函数功能:函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。
  • 函数原型
void* memcpy(void* dest, const void* src, size_t num);
  • 模拟实现
#include<stdio.h>
#include<string.h>
#include<assert.h>

void my_memcpy(void* dest, const void* src, size_t num)
{
	assert(dest && src);
	while (num--)
	{
		*(char*)dest = *(char*)src;
		dest = (char*)dest + 1;
		src = (char*)src + 1;
	}
}

int main()
{
	int num1[10] = { 0 };
	int num2[10] = { 1,2,3,4,5,6,7,8,9,0 };
	my_memcpy(num1, num2, 21);
	//memcpy(num1, num2, 20);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", num1[i]);
	}
	return 0;
}
  • 注意事项
  1. 这个函数在遇到 ‘\0’ 的时候并不会停下来。

  2. 如果source和destination有任何的重叠,复制的结果都是未定义的。

  3. 从上面我们memcpy的模拟实现中也可以看出,memcpy是从前向后拷贝的,这就导致在拷贝重叠内存数据时会发生数据覆盖,但是在VS下的memcpy函数是具备拷贝重叠数据的能力的,也就是说,VS下的memcpy函数同时实现了memmove函数的功能,但是其他编译器下的memcpy函数是否也具备memmove函数功能是未知的,所以我们在处理重叠内存数据拷贝的时候尽量还是使用memmove函数,以免发生错误。

memmove

  • 函数功能:内存移动,将一块内存数据中的内容移动覆盖至另一块内存数据,常用来处理重叠内存数据的拷贝。

  • 函数原型

void* memmove(void* dest, const void* src, size_t num);
  • 模拟实现
#include<stdio.h>
#include<assert.h>//断言所需头文件
#include<string.h>

void my_memmove(void* dest, const void* src, size_t num)
{
	assert(dest && src);
	if (dest < src)
	{
	    //从前向后拷贝
		for (int i = 0; i < num; i++)
		{
			*((char*)dest + i) = *((char*)src + i);
		}
	}
	else if(dest > src)
	{
		//从后向前拷贝
		while (num--)
		{
			*((char*)dest + num) = *((char*)src + num);
		}
	}
}

int main()
{
	int num[10] = { 1,2,3,4,5,6,7,8,9,0 };
	my_memmove(num + 2, num, 20);
	//my_memmove(num, num + 3, 20);
	//memmove(num + 2, num, 20);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", num[i]);
	}
	return 0;
}
  • 注意事项

memmove函数的行为和memcpy差不多,只是它的源和目标操作数可以重叠,按理说memmove的功能完全覆盖了memcpy,memcpy为什么没有被完全取代呢?因为memmove通常无法使用某些机器提供的特殊的字节-字符串处理指令来实现,所以它可能比memcpy慢一些。

memset

  • 函数功能:内存设置,把一块内存中num个字节的内容设置为指定的数据。

  • 函数原型

void* memset(void* dest, int n, size_t num);
// void* 函数返回值,返回目标空间的地址;
// int n 函数参数,指定你想要初始化的数据;
// size_t num 函数参数,指定初始化的字节数
  • 模拟实现
#include <stdio.h>
#include <assert.h>

void* my_memset(void* dest, int n, size_t num)
{
	assert(dest != NULL);
	void* ret = dest;  //记录目标空间的地址
	while (num--)  //循环将num个字节的内容初始化为指定值
	{
		*(char*)dest = n;
		dest = (char*)dest + 1;
	}
	return ret;
}

int main()
{
	char str[] = "hello world";
	my_memset(str, 'x', 5);
	printf("%s\n", str);
	return 0;
}

memcmp

  • 函数功能:内存比较,比较两块内存中前num个字节的大小。

  • 函数原型

int memcmp(const void* a, const void* b, size_t num);
  • 模拟实现
#include <stdio.h>
#include <assert.h>

int my_memcmp(const void* a, const void* b, size_t num)
{
	assert(a && b);
	size_t count = 0;  //用来标记相等的字节数
	while (*(char*)a == *(char*)b && count < num)  //一直循环,直到找到不相等的字节数据
	{
		count++;  //进入一次循环表示有一对字节相等,count++
		a = (char*)a + 1;
		b = (char*)b + 1;
	}
	if (count < num)  //如果count小于num,说明两块内存的前num个字节中有不相等的数据
		return *(char*)a - *(char*)b;  
	else
		return 0;  
}

int main()
{
	int arr1[] = { 1,2,3,4,5 };
	int arr2[] = { 1,2,3 };
	int ret = my_memcmp(arr1, arr2, 3 * sizeof(int));
	printf("%d\n", ret);
	return 0;
}

提醒

  1. 尽管你能够自己模拟实现库函数,但不要自己编写相同功能的函数试图取代库函数。
  2. 使用字符分类和转换函数可以提高函数的移植性。
  3. strtok函数是会修改它所处理的字符串
  4. strtok函数在连续的几次调用中,即使它们的参数相同,其结果也可能不同
  5. 在表达式中不要混用有符号数和无符号数
TDengine函数大全-字符串函数 TDengine 函数 字符串函数 char_length length concat concat_ws lower upper substr 阅读详情

相关推荐

基于Dify1.9知识库流水线模板的思考——图像和表格数据处理

本文探讨了Dify1.9知识库流水线中LLM节点对文档图像/表格增强处理的优化方案。针对当前仅在内容后追加说明的简单做法,提出了结构化标注的改进方法:通过唯一ID和注释块标记图像/表格及其描述,确保内容可精准对齐。文章详细阐述了该方案的解析处理流程、数据结构化表示方法,以及在RAG检索和文档还原中的具体应用。关键经验包括:必须结构化标注非文本内容、LLM增强的必要性、语义向量化处理等。该方案解决了原始方法在内容重排、相似元素区分和检索精度等方面的问题。

roseey的专栏 1433

C语言strcpy、strncpy函数是否会复制‘\0‘结束符

C语言strcpy、strncpy函数会复制'\0'结束符到目标字符串,以及strncpy的第三个参数细节

DRAXY的博客 1万+

【HSCNN解析】HSCNN:从欠采样光谱图重建高光谱图的CNN网络

本文介绍HSCNN,是一个将欠采样光谱图重建为高光谱图的纯CNN网络,2017年提出。

上个大学哪有不疯的?硬撑罢了! 1619

【C语言笔记】strncpy()和strcpy()的异同点

strncpy() 和 strcpy() 是字符串操作函数,它们之间有一些异同点:strcpy() 不会检查目标字符串的大小,复制整个源字符串直到遇到 \0。 strncpy() 接受一个额外的参数 n,用于指定最多复制的字符数,即使源字符串长度大于 n。strcpy() 如果源字符串太长,会导致目标缓冲区溢出。 strncpy() 虽然可以避免直接的缓冲区溢出,但如果源字符串长度大于 n,目标字符串不会以 \0 结尾,可能导致在使用目标字符串时出现问题。strcpy() 保证目标字符串以 \0 结尾。 s

专注音频,高效工作,快乐生活! 1314

【补充:脑电绘图教程 2】如何手动去除ICA伪迹分量

ICA可以将脑电信号分解为多个IC分量,由每个分量的平均功率地形图可以看出哪些分量属于伪迹,去除伪迹分量后,即可得到“干净”的脑电信号。本教程主要总结如何人工识别出ICA伪迹分量,不涉及ICA的原理讲解。本教程的主要知识来源是ICLabel官网ICLabel致力于自动识别IC分量属于哪种伪迹,并标记伪迹占比,可以在eeglabel中很方便地使用。ICLabel给出了几种常见伪迹的特点,本教程主要是根据ICLabel给出伪迹特点,对自己的数据集手动去除伪迹,以更深入了解自己数据集的质量和伪迹特点。

qq_40735196的博客 4230

PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别

本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。

weixin_29159441的博客 427

C语言的strncpy()函数在什么情况下会添加字符串末尾符‘\0‘,又什么情况下不会添加?

你要想使dst成为一个符合C语言解析规范的字符串,比如要让printf函数能处理这个dst字符串,你就需要手动把最后一位置为。假如src是一个1000长度的字符串,那么此时由于1000=1000,那么。假如src是一个1100长度的字符串,那么此时由于1100>1000,此时。假如src是一个80长度的字符串,那么此时由于80<1000,那么。会拷贝src中的1000个字符到dst,并且不会自动在末尾添加。个字符,那么显然dst的末尾不是。,此时,如果src本身就以。结尾,那么dst的末尾也为。

昊虹AI笔记 813

Power BI常见问题篇1:无法打开文档

Power BI常见问题篇1:无法打开文档

weixin_48273257的博客 3304

strncpy使用中需要注意的问题

在使用c语言进行项目开发的过程中,使用strncpy对字符串进行复制操作,因为该函数可以保证拷贝过程中内存不越界,但是该函数在使用过程中需要注意,拷贝的过程中是不会拷贝最后的结束符的。 如下图所示,在使用strncpy进行拷贝之前,从flash中读出来的auth_info数组是正常的。 通过malloc开辟内存的onenet_info结构体内容是随机的。 但是拷贝的时候,虽然拷贝了字符串长度的内容,但是并没有在后面补字符串结束符标志,导致了实际使用的auth_info从sn999变成了sn999N。

ShineRoyal 1647

openclaw本地模型对接

使用是官方推荐的一种集成方式,它可以简化配置过程。但由于您的系统环境和之前复杂的配置历史,我为您梳理了一个核心流程,并增加了关键的“事后检查”步骤,以确保能从根本上解决问题。

suny8的专栏 2459

Proxmox(pve)集群(4)存储(1)配置分布式存储ceph

它使用一种称为CRUSH(Controlled Replication Under Scalable Hashing)算法的数据分布算法来将数据均匀地分布在多个存储节点上,并确保数据的冗余和容错。它负责管理数据的分布、冗余和自动修复。PVE支持本地存储、LVM、NFS、iSCSI、CephFS、RBD、ZFS等存储方式,我这里使用两种存储方式,一种是通过ceph实现分布式存储,一种是通过truenas实现集中式存储。自我管理和自动恢复:Ceph具有自我管理的特性,可以动态地调整和优化存储集群的配置。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2623

strncpy截断问题

最近在对一块string对象进行拷贝到char数组的时候发现部分数据缺失了。原因是strncpy在复制的时候,在遇到'\0'时,先复制过去,然后的把dest剩下置为了'\0'。所以,一旦源字符串中存在'\0'则会导致源数据被截断。为此我们可以采用memcpy进行拷贝操作(snprintf 拷贝的时候遇到'\0' 也会停止)可以看到,发生了截断。

草上爬的博客 2359

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【字符函数以及字符串函数

它的参数是两个指针,第一个指向的是追加字符串的目的地的起始位置,即要将字符串追加到什么地方;它的返回值是目标空间的起始位置。strstr函数可以在一个字符串(字符串1)中查找另一个字符串(字符串2),如果字符串2存在于该字符串1中,那么就返回被字符串2在字符串1中第一次出现的起始位置,如果在字符串1中找不到字符串2,那么就返回空指针(NULL)。首先经过第一个p1从a的地址经过while循环在遇到\0的时候跳出循环,来到如图中p1的位置,来到第二个循环,p把\0的位置覆盖掉,最后一直打印到\0停止循环。

2402_82552926的博客 1457

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

字符函数和字符串函数

在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语言标准库中提供了一系列库函数,接下来我们就学习一下这些函数。

2301_79479763的博客 1713

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【字符函数】strcpy函数(字符串复制函数)+strcat函数(字符串追加)+strcmp函数(字符串比较)【笔记】

1.复制函数--------------strcpy函数函数使用模拟实现。

欢迎来到我的博客,私信我可以一起交流技术 1400

字符串--字符串处理函数、向函数传递字符串

再如,字符串“Hello China”大于字符串“Hello”,即strcmp(“Hello China”,“Hello”)的函数值大于0,这是因为’\0’的ASCII码值为0,其是ASCII码表中ASCII码值最小的,所以若一个字符串是另一个字符串的子串,即字符串中前面的字符都相同,那么长的字符串一定大于短的字符串。注意:程序37~39行的字符串赋值操作不同于单个字符的赋值操作,对单个字符进行赋值操作可以使用赋值运算符,但是赋值运算符不能用于字符串的赋值操作,字符串赋值只能使用函数strcpy()。

ww1425408527的博客 2727

matlab输入字符串函数,MATLAB字符串函数

MATLAB提供了大量的字符串函数,包括列在表6.3当中的。表6.3字 符 串 函 数eval(string)作为一个MATLAB命令求字符串的值eval(try,catch)blanks(n)返回一个n个零或空格的字符串deblank去掉字符串中后拖的空格feval求由字符串给定的函数值findstr从一个字符串内找出字符串isletter字母存在时返回真值isspace空格字符存在时返回真值i...

weixin_33186486的博客 4735

pgsql截取字符串函数_postgresql——字符串函数

字符串函数:postgresql中的字符串函数有:计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数、查找指定字符串位置函数等。1、计算字符串字符数和字符串长度的函数:char_length(str)和length(str)char_length(str)返回值为字符串str所包含的字符个数。一个多字节字符算作一个单字符。例子:使用char_length函数计算字符串字符个数,如:...

weixin_28888459的博客 1万+

【C语言】字符函数、字符串函数,内存函数

各位小伙伴大家好!上期小编给大家讲解了C语言中的指针,接下来我们讲解一下字符函数、字符串函数,内存函数!以上就是小编对字符函数、字符串函数,内存函数的详细讲解。如果觉得小编讲的还可以,还请一键三连。互三必回!持续更新中~!

Guiat的博客 1505

字符串_字符函数和字符串函数

注意:字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数但不包括'\0'。参数指向的字符串必须要以'\0'结束。函数的返回值为size_t,是无符号的。(size_t转为定义即unsigned int)

2401_83283514的博客 1936

写一个函数将一个字符串按反序存放。在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。

题目描述 写一个函数将一个字符串按反序存放。在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。 输入 一行字符串。 输出 输入字符串反序存放后的字符串。单独占一行。 样例输入 abcd 样例输出 dcba #include<stdio.h> #include<string.h> int magic(char x[100],char y[10...

呢喃 5461

字符串与字符串函数 - 字符串输出 & 常用字符串函数

一、字符串输出函数   1、puts() 函数   使用较为简单,只需要将字符串的地址作为参数进行传递即可。 #include <sthio,h> #define DEF "I am a #define string1" int main (void){ char str1[80] = "I am a #define string1"; const...

weixin_30894583的博客 297
上一篇: 数据在内存中的存储:详细解析
下一篇: 自定义类型详解:结构体,枚举,联合
岸边露伴'
博客等级 码龄3年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值