c语言:将一个字符串与单词同时翻转,例如 welcome to cvte 输出为 cvte to welcome
时间: 2024-02-19 15:59:16 浏览: 133
您好!对于您的问题,我可以给出以下的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverse(char* start, char* end) {
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
void reverseWords(char* str) {
char* wordStart = str;
char* temp = str;
while (*temp) {
temp++;
if (*temp == '\0') {
reverse(wordStart, temp - 1);
} else if (*temp == ' ') {
reverse(wordStart, temp - 1);
wordStart = temp + 1;
}
}
reverse(str, temp - 1);
}
int main() {
char str[] = "welcome to cvte";
printf("Original string: %s\n", str);
reverseWords(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
该程序中,我们定义了两个函数 `reverse` 和 `reverseWords`。其中,`reverse` 函数用于翻转一个字符串中的字符,`reverseWords` 函数用于翻转一个字符串中的所有单词。
在 `reverseWords` 函数中,我们先定义了两个指针 `wordStart` 和 `temp`,分别指向字符串的开始和结束位置。我们使用 `temp` 指针遍历整个字符串,当遇到空格或字符串结尾时,就调用 `reverse` 函数翻转 `wordStart` 和 `temp` 之间的字符。然后将 `wordStart` 指针移到下一个单词的开始位置,继续遍历字符串。最后,我们再一次调用 `reverse` 函数翻转整个字符串,得到最终结果。
以上代码输出结果为:
```
Original string: welcome to cvte
Reversed string: cvte to welcome
```
希望能够帮助到您!如果您还有其他问题,请继续提问。
阅读全文