第九章:字符串、字符和字节

日常使用我们都知道:利用字符数组或者指向字符的指针去存储字符串。这里把一些使用的注意事项罗列出来以便以后回顾

1、首先strlen函数返回的是一个size_t类型的值,是无符号数,所以如果比较大小

strlen(x)>=strlen(y)是可以的,但是strlen(x)-strlen(y)>=0,这基本上都是成立的,无符号数相减永远大于等于0。所以不能对strlen做这样的比较

比如strlen(x)>=10可以,strlen(x)-10>=0这非常没有意义  一样的道理。

2、strcpy函数

原型 char* strcpy(char* dst,char const* src);

如果参数dst与src重叠,结果是未定义的。如果dst长于src赋值完以后加上\0表示终止。如果小于,那么就会赋值到这个数组大小之外,占用后面的内存空间。所以要对目标数组的长度进行判断。

strcat也是一样,把字符串连接,加到dst后面,要求可以容纳所有字符串。

字符串比较strcmp(s1,s2)有返回值,如果s1<s2返回负数,相等返回0,大于返回正数。

strncpy,strcat,strncmp均是能限制长度的函数

原型:char*  strncpy(char* dst,char const* src,size_t len);

第三个参数就表示长度,就是向dst写入len个字符,如果src长度小于len,赋值完以后,dst后面补\0到len长度,如果大于len,则赋值len个,结果不会以null结尾

strncat是最多从src复制len个字符到目标数组后面,最后加一个null,不管空间够不够。

strncmp就是比较前len个字符。

3、字符串查找函数

char* strchr(char const* str,int ch);第一次出现ch的地方

strrchr,最后一次

strpbrk则是查找多个字符某一个第一次出现在str中的位置。

查找子串使用strstr.

4、查找标记

char* strtok(char* str,char const* sep);

在这个函数执行时会修改所处理的字符串,如果不能修改,拷贝一份然后把拷贝的传递给strtok

sep表示要查找的标记

使用如下:

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

void
print_tokens( char *line )
{
	static	char	whitespace[] = " \t\f\r\v\n";
	char	*token;

	for( token = strtok( line, whitespace );
	    token != NULL;
	    token = strtok( NULL, whitespace ) )
		printf( "Next token is %s\n", token );
}
第一次调用时用字符串,之后用NULL一直取。

5、字符分类

字符分类时使用#include <ctype.h>库,可以保证可移植性。

6、内存操作


第三个参数均是要处理的字节数,和strn带头的不同,遇到NULL事不会停止的。

memmove和memcpy差不多,不过它的源和目标操作数可以重叠。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值