C语言(五)——常用的字符串函数

1.strlen()

定义:
size_t strlen (const char *s);
表头文件:
#include <string.h>
说明:
strlen()用来计算指定的字符串s的长度, 不包括结束字符"\0"。
返回值:
返回字符串s的字符数。

示例:

/*取得字符串str的长度*/
#include<string.h>
main()
{
	char *str = "12345678";
	printf("str length = %d\n", strlen(str));
}
		 
执行:
str length = 8

2.fgets

定义:
char * fgets(char * s,int size,FILE * stream);
表头文件:
#include<stdio.h>
说明:
fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间, 直到出现换行字符、读到文件尾或是已读了size-1个字符为止, 最后会加上'\0'作为字符串结束。
返回值:
fgets()若成功则返回s指针, 返回NULL则表示有错误发生。
相关函数:
open, fread, fscanf, getc

示例:

#include<stdio.h>
main()
{
	char s[80];
	fputs(fgets(s,80,stdin),stdout);
}
执行:
this is a test /*输入*/
this is a test /*输出*/

    
    stream:输入流
        标准输入:stdin(从终端上读取)
     返回值:返回s
        
 注意,当输入的字符个数小于size - 1 ,那么就会多输入一个'\n',
去掉'\n'
    	eg:
    		buf[strlen(buf) - 1] = '\0';

3.strcpy()

定义:
char *strcpy(char *dest,const char *src);
表头文件:
#include <string.h>
说明:
strcpy()会将参数src字符串拷贝至参数dest所指的地址。
返回值:
返回参数dest的字符串起始地址。
相关函数:
bcopy, memcpy, memccpy, memmove
附加说明:
如果参数dest所指的内存空间不够大, 可能会造成缓冲溢出(buffer Overflow)的错误情况, 在编写程序时请特别留意, 或者用strncpy()来取代。

示例:

#include<string.h>
main()
{
	char a[30]="string(1)";
	char b[]="string(2)";
	printf("before strcpy() :%s\n",a);
	printf("after strcpy() :%s\n",strcpy(a,b));
}
		 
执行:
before strcpy() :string(1)
after strcpy() :string(2)
    
在拷贝的时候,会连同src后面的'\0'一起拷贝,

4.strcat

定义:
char *strcat (char *dest,const char *src);
表头文件:
#include <string.h>
说明:
strcat()会将参数src字符串拷贝到参数dest所指的字符串尾。第一个参数dest要有足够的空间来容纳要拷贝的字符串。
返回值:
返回参数dest的字符串起始地址
相关函数:
bcopy, memccpy, memcpy, strcpy, strncpy

范例:

#include <string.h.>
main()
{
	char a[30]="string(1)";
	char b[]="string(2)";
	printf("before strcat() : %s\n",a);
	printf("after strcat() : %s\n",strcat(a,b));
}
		 
执行
before strcat () : string(1)
after strcat () : string(1)string(2)
注意:
dest指向的空间要足够大;
在连接的时候,dest后的'\0'被覆盖,src的'\0'作为新串的'\0';

5.strcmp

定义:
int strcmp(const char *s1,const char *s2);
表头文件:
#include <string.h>
说明:
strcmp()用来比较参数s1和s2字符串。字符串大小的比较是以ASCII 码表上的顺序来决定, 此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值, 若差值为0则再继续比较下个字符, 若差值不为0则将差值返回。例(64位机如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
返回值:
若参数s1和s2字符串相同则返回0。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。
相关函数:
bcmp, memcmp, strcasecmp, strncasecmp, strcoll

示例:

#include<string.h>
main()
{
	char *a="aBcDeF";
	char *b="AbCdEf";
	char *c="aacdef";
	char *d="aBcDeF";
	printf("strcmp(a,b) : %d\n",strcmp(a,b));
	printf("strcmp(a,c) : %d\n",strcmp(a,c));
	printf("strcmp(a,d) : %d\n",strcmp(a,d));
}
		 
执行:
strcmp(a,b) : 32
strcmp(a,c) :-31
strcmp(a,d) : 0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值