AI智能
改变未来

C语言的字符串操作


C语言的字符串操作

1.strtok 实现字符串切割: 将字符串根据分隔符进行切割分片.

#include int main(int argc, char* argv[]){	char str[] = \"hello,lyshark,welcome\";	char *ptr;ptr = strtok(str, \",\");	while (ptr != NULL){		printf(\"切割元素: %s\\n\", ptr);ptr = strtok(NULL, \",\");}system(\"pause\");	return 0;}

2.strlen 获取字符串长度

#include int main(int argc, char* argv[]){	char Array[] = \"\\0hello\\nlyshark\";	char Str[] = { \'h\', \'e\', \'l\', \'l\', \'o\' };	int array_len = strlen(Array);	printf(\"字符串的有效长度:%d\\n\", array_len);	int str_len = strlen(Str);	printf(\"字符串数组有效长度: %d\\n\", str_len);int index = 0;	while (Str[index] != \'\\0\'){index++;		printf(\"Str数组元素: %c --> 计数: %d \\n\", Str[index], index);}system(\"pause\");	return 0;}

3.strcpy 字符串拷贝:

#include #include #include int main(int argc, char* argv[]){	char Array[] = \"hello lyshark\";	char tmp[100];	// 学习strcpy函数的使用方式if (strcpy(tmp, Array) == NULL)		printf(\"从Array拷贝到tmp失败\\n\");	elseprintf(\"拷贝后打印: %s\\n\", tmp);	// 清空tmp数组的两种方式for (unsigned int x = 0; x < strlen(tmp); x++)tmp[x] = \' \';	memset(tmp, 0, sizeof(tmp));// 学习strncpy函数的使用方式if (strncpy(tmp, Array, 3) == NULL)		printf(\"从Array拷贝3个字符到tmp失败\\n\");	elseprintf(\"拷贝后打印: %s\\n\", tmp);system(\"pause\");	return 0;}

4.strcat字符串连接: 将由src指向的空终止字节串的副本追加到由dest指向的以空字节终止的字节串的末尾

#include #include #include int main(int argc, char* argv[]){	char str1[50] = \"hello \";	char str2[50] = \"lyshark!\";	char * str = strcat(str1, str2);	printf(\"字符串连接: %s \\n\", str);str = strcat(str1, \" world\");	printf(\"字符串连接: %s \\n\", str);str = strncat(str1, str2, 3);	printf(\"字符串连接: %s \\n\", str);system(\"pause\");	return 0;}

5.strcmp 字符串对比:

#include #include #include int Str_Cmp(const char * lhs, const char * rhs){	int ret = strcmp(lhs, rhs);	if (ret == 0)		return 1;	elsereturn 0;}int main(int argc, char* argv[]){	char *str1 = \"hello lyshark\";	char *str2 = \"hello lyshark\";	int ret = Str_Cmp(str1, str2);	printf(\"字符串是否相等: %d \\n\", ret);	if (!strncmp(str1, str2, 3))		printf(\"两个字符串,前三位相等\");system(\"pause\");	return 0;}

6.strshr 字符串截取:

#include #include #include int main(int argc, char* argv[]){	const char str[] = \"hello ! lyshark\";	char *ret;ret = strchr(str, \'!\');	printf(\"%s \\n\", ret);system(\"pause\");	return 0;}

7.字符串逆序排列:

#include #include #include void Swap_Str(char *Array){	int len = strlen(Array);	char *p1 = Array;	char *p2 = &Array[len - 1];	while (p1 < p2){		char tmp = *p1;*p1 = *p2;*p2 = tmp;p1++, p2--;}}int main(int argc, char* argv[]){	char str[20] = \"hello lyshark\";Swap_Str(str);for (int x = 0; x < strlen(str); x++)		printf(\"%c\", str[x]);system(\"pause\");	return 0;}

8.实现字符串拷贝:

#include #include #include // 使用数组实现字符串拷贝void CopyString(char *dest,const char *source){	int len = strlen(source);	for (int x = 0; x < len; x++){dest[x] = source[x];}dest[len] = \'\\0\';}// 使用指针的方式实现拷贝void CopyStringPtr(char *dest, const char *source){	while (*source != \'\\0\'){*dest = *source;++dest, ++source;}*dest = \'\\0\';}// 简易版字符串拷贝void CopyStringPtrBase(char *dest, const char *source){	while (*dest++ = *source++);}int main(int argc, char* argv[]){	char * str = \"hello lyshark\";	char buf[1024] = { 0 };CopyStringPtrBase(buf, str);	printf(\"%s \\n\", buf);system(\"pause\");	return 0;}

9.格式化字符串:

#include #include #include int main(int argc, char* argv[]){	// 格式化填充输出char buf[30] = { 0 };	sprintf(buf, \"hello %s %s\", \"lyshark\",\"you are good\");	printf(\"格式化后: %s \\n\", buf);	// 拼接字符串char *s1 = \"hello\";	char *s2 = \"lyshark\";	memset(buf, 0, 30);	sprintf(buf, \"%s --> %s\", s1, s2);	printf(\"格式化后: %s \\n\", buf);	// 数字装换位字符串int number = 100;	memset(buf, 0, 30);	sprintf(buf, \"%d\", number);	printf(\"格式化后: %s \\n\", buf);system(\"pause\");	return 0;}

10.动态存储字符串:

#include #include #include int main(int argc, char* argv[]){	// 分配空间char **p = malloc(sizeof(char *)* 5);	for (int x = 0; x < 5;++x){p[x] = malloc(64); memset(p[x], 0, 64);		sprintf(p[x], \"Name %d\", x + 1);}	// 打印字符串for (int x = 0; x < 5; x++)		printf(\"%s \\n\", p[x]);	// 释放空间for (int x = 0; x < 5; x++){		if (p[x] != NULL)			free(p[x]);}system(\"pause\");	return 0;}

11.字符串拼接:

#include #include #include char * StringSplicing(char *String1, char  *String2){	char Buffer[1024];	int index = 0;	int len = strlen(String1);	while (String1[index] != \'\\0\'){Buffer[index] = String1[index];index++;}	while (String2[index - len] != \'\\0\'){Buffer[index] = String2[index - len];index++;}Buffer[index] = \'\\0\';	char *ret = (char*)calloc(1024, sizeof(char*));	if (ret)		strcpy(ret, Buffer);	return ret;}int main(int argc, char* argv[]){	char *str1 = \"hello \";	char *str2 = \"lyshark ! \\n\";	char * new_str = StringSplicing(str1, str2);	printf(\"拼接好的字符串是: %s\", new_str);system(\"pause\");	return 0;}

12.实现strchr:

#include #include #include char * MyStrchr(const char *String, char ch){	char *ptr = String;	while (*ptr != \'\\0\'){		if (*ptr == ch)			return ptr;ptr++;}	return NULL;}int main(int argc, char* argv[]){	char Str[] = \"hello lyshark\";	char ch = \'s\';	char *ptr = MyStrchr(Str, ch);	printf(\"输出结果: %s \\n\", ptr);system(\"pause\");	return 0;}

13.自己实现寻找字符串子串:

#include #include // 查找子串第一次出现的位置char *MyStrStr(const char* str, const char* substr){	const char *mystr = str;	const char *mysub = substr;	while (*mystr != \'\\0\'){		if (*mystr != *mysub){++mystr;			continue;}		char *tmp_mystr = mystr;		char *tmp_mysub = mysub;		while (tmp_mysub != \'\\0\'){			if (*tmp_mystr != *tmp_mysub){++mystr;				break;} ++tmp_mysub;}		if (*tmp_mysub == \'\\0\'){			return mystr;}}	return NULL;}int main(int argc, char* argv[]){	char *str = \"abcdefg\";	char *sub = \"fg\";	char * aaa = MyStrStr(str, sub);	printf(\"%s\", aaa);system(\"pause\");	return 0;}

14.删除字符串中连续字符

#include char del(char s[],int pos,int len)   //自定义删除函数,这里采用覆盖方法 {   int i;   for (i=pos+len-1; s[i]!=\'\\0\'; i++,pos++)     s[pos-1]=s[i];   //用删除部分后的字符依次从删除部分开始覆盖   s[pos-1]=\'\\0\';   return s; }int main(int argc, char *argv[]){  char str[50];  int position,length;  printf (\"please input string:\\n\");  gets(str);   //使用gets函数获得字符串  printf (\"please input delete position:\");  scanf(\"%d\",&position);  printf (\"please input delete length:\");  scanf(\"%d\",&length);  del(str,position,length);  printf (\"the final string:%s\\n\",str);  return 0;}

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » C语言的字符串操作