您的位置:首页 > 其它

关于字符串逆置的小题

2016-04-09 14:27 295 查看
//5.有一个字符数组的内容为:”student a am i”,请

//你将数组的内容改为”i am a student”.

//要求:

//不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。

在这里我们所采用的方法简单说就是先将 student a am i变成i ma a tenduts,然后,再进行对每个单词进行逆置。最终变成 i am a student。

#include <stdio.h>
#include<stdlib.h>
void reverse(char *left, char *right)
{
while(left<right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void reverse_str(char arr[], int sz)
{
char *left = arr;
char *right = arr+sz-1;
char *start = arr;
char *end = arr;
reverse(left, right);
while(*end != '\0')
{
while((*end != ' ') && (*end != '\0'))
{
end++;
}
reverse(start, end-1);
if(*end != '\0')
{
start = end+1;
end = start;
}
}
}

int main()
{
char arr[] = "student a am i";
int sz = sizeof(arr)/sizeof(arr[0])-1;
reverse_str(arr, sz);
printf("%s\n",arr);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: