字符串函数

本文详细介绍了C语言中的字符串函数,包括strlen(求字符串长度)、strcpy(字符串拷贝)、strncpy(长度受限拷贝)、strcmp(字符串比较)、strstr(子串查找)、strtok(字符串分解)以及strerror(错误信息获取)。这些函数在处理字符串操作时各具特色,注意它们的使用场景和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串函数<string.h>

strlen:

strlen--string length--求字符串长度

所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

⒈sizeof操作符的结果类型是size_t(返回类型),它在头文件中typedef为unsigned int类型。

该类型保证能容纳实现所建立的最大对象的字节大小。

⒉sizeof是取字节运算符(关键字),strlen是函数。

⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。

sizeof还可以用函数做参数,比如:

⒋数组做sizeof的参数不退化,传递给strlen就退化为指针了。

⒌大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因

6.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。

7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

⒏当适用了于一个结构类型时或变量, sizeof 返回实际的大小,当适用一静态地空间数组, sizeof 归还全部数组的尺寸。

⒐数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,

strlen("abc")-strlen("abcdef")
//返回值大于0,strlen为无符号整形

strcpy:

strcpy--string copy 拷贝函数

是一种C语言的标准库函数,strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。

原型为:

char * strcpy(char * strDest,const char * strSrc);

注意事项:目标字符串,源字符串必须包含‘\0’,且目标空间足够大。

atrcpy:长度不受限制。

strncpy:使长度受限制。如:

int arr1[10]={0};
int arr2="asdfgh";
strncpy(arr1,arr2,3);
//即arr1中只拷贝到了asd

stract:

stract--追加一个字符串

头文件中的函数,用于将两个char类型数组相连,结果放在dest中,并返回拼接后的dest和src。

原型为:

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

注意事项:源字符串和目标字符串都要有‘\0’

目标空间足够大,目标空间可修改。

stranct:使长度受限制。

strcmp:

strcmp--string compare 比较函数

比较两个字符串

设这两个字符串为str1,str2,

若str1==str2,则返回零;

若str1<str2,则返回负数;

若str1>str2,则返回正数。

比较两个字符串对应位置上的ASCLL码值的大小。

原型为:

int strcmp(const char*str1,const char*str2)

strncpy:使长度受限制。

strstr:

作用是返回字符串中首次出现子串的地址。

语法:

str1: 被查找目标 string expression to search.

str2: 要查找对象 The string expression to find.

返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

原型为:

char*strstr(const char*str1,const char*str2)

strtok:

分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

原型为:

char *strtok(char*str, const char *delim)

strerror:

从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。strerror 生成的错误字符串取决于开发平台和编译器

原型为:

char *strerror(int errnum)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值