我是靠谱客的博主 野性星星,这篇文章主要介绍字符串倒置函数,现在分享给大家,希望可以做个参考。

有一个字符数组的内容为:“student a am i”,
请你将数组的内容改为"i am a student."
要求: 不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。
我的方法是这样的:
原字符串:student a am i
倒置一遍:tneduts a ma i
整体倒置:i am a student

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

void strs(char str[], int i){
	char* pc = str;
	char* pcc = str, *pccc = str;//三个指针,其中两个是用来倒置用的一个是用来作为船锚用;
	int j = i - 2;//后期会用到
	while (i){//先将整个字符串扫了一遍将每个需要置换的字母置换好
		if (*pcc != ' '&&*pcc != '/0'){
			*pcc++;//把指针指向空格或者/0这时候pcc和p之间的字符需要倒置
		}
		else {//倒置就行
			pccc = &(*pcc);//借用第三个指针来改变字符串这样pcc就不会重复遍历数组
			pccc -= 1;//开始pcc在‘ ’或者‘/0’向后走一位就到了单词上
			while (pc < pccc){
				*pc ^= *pccc;
				*pccc ^= *pc;
				*pc ^= *pccc;
				pc++; pccc--;//一个向前走,一个向后走

			}
			pcc += 1;//这时候最开始的船锚指针可以指向下一个字符了
			pc = &(*pcc);//两指针再次指向同一字符
		}

		i--;
	}
	//下面将整个字符串倒置就行
	pc = str;
	pcc = pc + j;
	while (pc < pcc){
		*pc ^= *pcc;
		*pcc ^= *pc;
		*pc ^= *pcc;
		pc++; pcc--;

	}

}







int main(){

	char str[] = { "student a am i" };
	char *p = str;
	int i = sizeof(str) / sizeof(str[0]); //计算字符串大小
	strs(p, i);
	printf("%s", p);//因为是指针所以经过倒置直接变换了原字符串的内容


	system("pause");
	return 0;
}

最后

以上就是野性星星最近收集整理的关于字符串倒置函数的全部内容,更多相关字符串倒置函数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部