编写一个函数实现字符串中单词的逆序,其他字符保持位置不变.C语言实现
时间: 2023-05-17 07:02:41 浏览: 86
以下是一个 C 语言实现的函数,可以实现字符串中单词的逆序,其他字符保持位置不变:
```c
#include <stdio.h>
#include <string.h>
void reverseWords(char *str)
{
int i, j, len;
char temp;
len = strlen(str);
// 翻转整个字符串
for (i = 0, j = len - 1; i < j; i++, j--)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
// 翻转每个单词
for (i = 0, j = 0; i < len; i++)
{
if (str[i] == ' ')
{
// 翻转单词
for (int k = j, l = i - 1; k < l; k++, l--)
{
temp = str[k];
str[k] = str[l];
str[l] = temp;
}
j = i + 1;
}
}
// 翻转最后一个单词
for (int k = j, l = len - 1; k < l; k++, l--)
{
temp = str[k];
str[k] = str[l];
str[l] = temp;
}
}
int main()
{
char str[] = "Hello world! This is a test.";
printf("Original string: %s\n", str);
reverseWords(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
输出结果为:
```
Original string: Hello world! This is a test.
Reversed string: olleH dlrow! sihT si a tset.
```