栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言之字符函数和字符串函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言之字符函数和字符串函数

目录

前言

长度不受限制字符串函数

strlen函数

使用:

strcpy函数

使用:

strcat函数

使用:

strcmp函数

使用:

长度受限制字符串函数

strncpy函数

使用:

strncat函数

使用:

strncmp函数

使用:

其他字符串函数函数 

strstr函数

使用:

strtok函数

使用:

strerror函数

使用:

前言

C语言中对字符和字符串的处理是频繁的,但C语言本身是没有字符串类型的,字符串通常放在常量字符串中,或者字符串数组中,字符串常量适用于那些对他不做修改的字符串函数

长度不受限制字符串函数

strlen函数

注意:size_t 为无符号整形的意思

使用:

引入头文件:include

#include 
#include 
void main() {
	char c[] = "hello";//字符串与字符数组不同,后面默认有'';
	char d[] = { 'h','e','l','l','o' };
	printf("%dn", strlen(c));//5
	printf("%dn", strlen(d));//随机值
}

strcpy函数

  • 将source字符串复制到destination上(destination如果不为空串则会被source字符串覆盖),返回值为destination的首地址
  •  源字符串必须以''结束
  • 会将源字符串的''拷贝到目标字符串
  • 目标字符串空间必须足够大,以确保能存放源字符串
  • 目标空间必须可变
  • 学会模拟实现 
使用:

引入头文件:include

#include 
#include
void main() {
	char arr1[20] = { 0 };
	char arr2[] = "hello world";
	strcpy(arr1, arr2);//返回值为arr1的首地址
	printf("%s", arr1);
}

strcat函数

  • 把源字符串数据追加到目标字符串当中去 ,返回值为destination的首地址
  • 源字符串必须以''结束
  • 目标空间必须足够的大,能容纳源字符串的内容
  • 目标空间必须可修改
  • 不能自己给自己追加(原因:''被替换不能暂停循环)
使用:

引入头文件:include

#include 
#include
void main() {
	char arr1[20]="hello ";
	strcat(arr1, "world");//追加字符串,返回值为目标字符串首地址
	printf("%sn", arr1);//hello world
}

strcmp函数

两个字符串的比较

  1. ==比较,比较的是2个字符串的地址值
  2. strcmp(str1,str2)函数比较两个字符串的内容是否相等,如果两个字符串内容相等,那么此函数便会返回0

该函数返回值如下:

  • 如果返回值小于 0,则表示 str1 小于 str2。
  • 如果返回值大于 0,则表示 str1 大于 str2。
  • 如果返回值等于 0,则表示 str1 等于 str2。

比较方法:比较对应位置上的ASCII码值从头到尾逐个比较当第一次出现ASCII码值不同时,则此字符ASCII码大字符所在的字符串大于另一个字符串。

使用:

引入头文件:include

#include 
#include
void main() {
	char arr1[] = "abc";
	char arr2[] = "abc";
	if (0==strcmp(arr1,arr2))
	{
		printf("两个字符串内容相等");
	}
	else if(0 

长度受限制字符串函数

strncpy函数

  •  将源字符串的前num个字符拷贝到目标字符串当中,返回值为目标字符串的首地址
  • 如果原数组拷贝个数超出源字符串长度,则之后的拷贝用''补充
  • 目标空间必须足够的大,能容纳源字符串的内容
  • 目标空间必须可修改
使用:

引入头文件:include

#include 
#include
void main() {
	char arr1[20] = "hello";
	char arr2[] = "hi world";
	printf("%sn", strncpy(arr1, arr2,2));//hillo
}

strncat函数

  • 将源字符串的前num个字符追加到目标字符串当中,返回值为目标字符串的首地址
  • 如果原数组拷贝个数超出源字符串长度,则只追加到源字符串长度
  • 可以自己给自己追加
  • 目标空间必须足够的大,能容纳源字符串的内容
  • 目标空间必须可修改
使用:

引入头文件:include

#include 
#include
void main() {
	char arr1[20] = "hello ";
	char arr2[] = "world hahaha";
	printf("%sn", strncat(arr1, arr2,5));//hello world
}

strncmp函数

  • 将str1字符串与str2字符串比较num个字符,返回值类型同strcmp 
使用:

引入头文件:include

#include 
#include
void main() {
	char* p = "abcd";
	char* q = "abed";
	int ret = strncmp(p, q, 2);//比较2个字符
	int res = strncmp(p, q, 3);//比较3个字符
	printf("%dn", ret);//0
	printf("%dn", res);//-1
}

其他字符串函数函数 

strstr函数

  •  在str1字符串中查找是否包含str2字符串,如果存在则返回的是第一次出现位置的字符串,如果不存在,则返回的是null,如果str2传的为空串则返回str1
使用:

引入头文件:include

#include 
#include
void main() {
	char arr1[] = "abcdefabcdef";
	char arr2[] = "bcd";
	//在arr1中查找是否包含arr2
	printf("%sn", strstr(arr1, arr2));//bcdefabcdef
}

strtok函数

  •  seq是个字符串,定义了用作分隔符的字符集合
  • 第一个参数指定一个字符串,它包含了0个或者多个由seq字符串中一个或者多个分隔符分割的标记。
  • strtok函数找到str中的下一个标记,并将其用’'替换结尾,返回一个指向这个标记的指针。(注意:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝内容,并且可修改的)。
  • strtok函数的第一个参数不为null,函数将找到str中的第一个标记,strtok函数将保存他在字符串中的位置
  • strtok函数的第一个参数为null,函数将在同一个字符串中被保存的位置开始,查找下一个标记
  • 如果字符串中不存在更多标记,则返回null指针
使用:

引入头文件:include

#include 
#include
void main() {
	char arr1[] = "abcdefabcdef";
	char tmp[30] = { 0 };
	strcpy(tmp, arr1);//临时拷贝
	char arr2[] = "cf";//分隔符的集合
	char* ret = NULL;
	for (ret = strtok(tmp, arr2); ret != NULL; ret = strtok(NULL, arr2)) {
		printf("%sn", ret);
	}
}

strerror函数

  • 调用库函数失败的时候都会设置错误码,errnum表示错误码,将错误码传给strerror函数的时候,该函数将会返回错误码所对应的错误信息字符串的首地址。(将错误码翻译成错误信息)
使用:

引入头文件:include 、include

#include 
#include
void main() {
	printf("%sn", strerror(0));//No error
	printf("%sn", strerror(1));//Operation not permitted
	printf("%sn", strerror(2));//No such file or directory
	printf("%sn", strerror(3));//No such process
	printf("%sn", strerror(4));//Interrupted function call
}

注意:errno为在C语言中的全局错误码,要使用必须引入头文件include

#include 
#include
#include 
int main()
{
    FILE* pFile;
    pFile = fopen("test.txt", "r");
    if (pFile == NULL)
        printf("Error opening file test.txt: %sn", strerror(errno));
    //当fopen这个库函数调用失败时就会有错误码,然后把错误码放到后面的errno这个变量里去,然后strerror函数就会根据错误码,把对应的错误信息打印出来
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920346.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号