利用C语言实现对单个字符串逆转

将“student a am i”在不使用库函数和不单独开辟空间的情况下转为“i am a student”。

可先将student a am i转换为

          i ma a tneduts在转换为

          i am a student

故首先应将字符串逆置,在对单个单词进行逆置:

1:将字符串逆置,利用Strlen函数求字符串的长度。

void Reverse(char *left, char *right){
	while (left < right){
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}

int Strlen(char *string){
	int count = 0;
	while (*(string + count) != '\0'){
		count++;
	}
	return count;
}

2:在对单个单词逆转,改变指针p所指向位置判断是否为空,当检测到空时即为一个单词,利用strat标记单词的头部,p-1标记单词的尾部在调用函数进行逆转,当p所指位置为‘\0’时即为字符串结束,结束循环。

void ReverseSentence(char *string){
	    char *left = string;
	    char *right = string + Strlen(string) - 1;
		char *p = string;
		Reverse(left, right);

       while (*p != '\0'){
			char *start = p;
			while (*p != ' ' &&  *p != '\0'){
				p++;
			}
			Reverse(start, p - 1);
			if (*p == ' '){
				p++;
			}
		}
}

猜你喜欢

转载自blog.csdn.net/qq_44370562/article/details/89380296
今日推荐