一.将一句话里的单词倒置 “student a am I” 改为 “I am a student”
void reverse_string(char* start, char* end)
{
assert(start);
assert(end);
while (start < end)
{
*start = *start^*end;
*end = *start^*end;
*start = *start^*end;
++start;
--end;
}
}
void str_reverse(char* str)
{
assert(str);
int len = strlen(str);
//首先整体逆置
reverse_string(str, str + len - 1);
//部分逆置
while (*str != '\0')
{
char* p = str;
while (*str != '\0' && *str != ' ')
{
++str;
}
reverse_string( p, str - 1);
++str;
}
}
int main()
{
char str[] = "student a am i";
str_reverse(str);
printf("%s\n", str);
system("pause");
return 0;
}
二.实现一个函数,将字符数组中每个空格替换为%20
//字符串替换空格
void Replace(char* dest, const char* src)
{
assert(dest);
assert(src);
while (*src)
{
if (*src != ' ') //如果不为空格,则原样输出
{
*dest = *src;
++dest;
}
else
{
strcpy(dest, "%20");
dest = dest + 3;
}
++src; //源字符串每次只需要加1
}
*dest = '\0';
}
int main()
{
char dest[60];
char src[] = "we are happy!";
Replace(dest, src);
printf("%s\n", dest);
system("pause");
return 0;
}