码迷,mamicode.com
首页 > 其他好文 > 详细

高级字符串函数

时间:2015-12-14 23:26:19      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:c语言 字符串函数

查找一个字符串前缀

size_t strspn(char const *str,char const *group)

size_t strcspn(char const *str,char const *group)

strspn 返回str起始部分匹配group中任意字符的字符数

strcspn他对str字符串起始部分中部与group中任何字符匹配的字符进行技术

在字符串中查找指定字符串最后一次出现的位置

strrstr


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

char *strrstr(const char*str1, char *str2)
{
	assert(str1);
	assert(str2);
	
	char *last = NULL;
	char *cur = strstr(str1, str2);
	
	while (cur != NULL)
	{
		last = cur;//last保存自字符串不为空的最后一个地址
		cur = strstr(cur+1, str2);
	}
	return last;//返回最后一次出现的位置
}
int main()
{
	char *p = "abcdefgabcdef";
	char *q = "cdef";
	char *ret = strrstr(p, q);
	
	printf("%s\n", ret);
	system("pause");
	return 0;
}

strtok它从字符串中隔离各个单独的称为标记(token)的部分,并舍弃分隔符

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

sep的参数是字符串,定义了做分隔符的字符集合

若strtok的第一个参数不是NULL,函数将找到字符串的第一个标记,strtok同时保存它在字符串的位置

若strtok的第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始像前面一样查找下一个标记

//strtok
#include<stdio.h>
#include<string.h>
int main()
{
	char *p = "193.168.0.1";
	char arr[20];
	strcpy(arr, p);
	char *token = NULL;
	/*char *token = strtok(arr, ".");
	printf("%s\n",token);
	while (token != NULL)
	{
		token = strtok(NULL, ".");
		if (token!=NULL)
		printf("%s\n", token);
	}*/
	for (token = strtok(arr, ".");
		token != NULL;
		token = strtok(NULL, "."))
	{
		printf("%s\n", token);
	}
	system("pause");
	return 0;}

//

strerror

char *strerror(int error_number)

//打开文件
//errno
#include<stdio.h>
#include<errno.h>
int main()
{
	FILE *pf = fopen("c:\\codetest.text", "r");
	if (pf == NULL)
	{
	printf("error:%s\n", strerror(errno));
		//打印相应错误信息
		//若正确 输出no error
		//若这个文件名不存在,则输出“error:No such file or dictory”等
		printf("open file error\n");
	}
	systme("pasue");
	return 0;
}
//错误描述信息
// char *strerror(int error_number);
//返回错误码所带的错误信息
//strerror(errno)    
//在头文件errno.h中定义了一个errno错误码 当发生错误,将错误码置成当前的错误码
//

内存操作

要操作的内容有“\0”时,字符串函数具有局限性

void *memcpy(void *dst,void const *src,zise_t length)

void *memmove(void *dst,void const *src,zise_t length)

void *memcmp(void *a,void const *b,zise_t length)

voif *memchr(void *a,int ch,zise_t length)

对某个空间初始化

memset

void memset(void *dest,int c,size_t count)

本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1722962

高级字符串函数

标签:c语言 字符串函数

原文地址:http://10797127.blog.51cto.com/10787127/1722962

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!