使用c语言实现字符串单词转换
时间: 2024-12-22 17:13:27 浏览: 8
在C语言中,要将一个字符串中的单词顺序反转,可以使用两个指针,一个指向字符串开始,另一个指向当前处理的单词结束位置。以下是一个简单的步骤:
1. 初始化两个指针:`start` 指向字符串开始,`end` 初始设为NULL,用于标记单词结束。
2. 当找到空格或字符串结尾时,我们找到了一个单词,将其添加到反转后的字符串,并更新 `end`。
3. 将 `start` 移动到下一个空格的位置,继续寻找下一个单词。
4. 当遍历完整个字符串后,如果还有剩余字符,即 `start` 还没到达 `end`,将最后一个单词添加到结果中。
下面是一个基本的示例代码片段:
```c
#include <stdio.h>
#include <string.h>
void reverse_words(char *str) {
if (str == NULL) return;
int len = strlen(str);
char *start = str;
char *end = start;
for (; end < len; ++end) {
if (*end == ' ' || *end == '\0') { // 找到单词边界
char temp[len - start) + 1]; // 分配空间存储单词
strncpy(temp, start, end - start); // 复制单词
temp[end - start] = '\0'; // 结束符
// 反转单词
int i, j;
for (i = 0, j = strlen(temp) - 1; i < j; ++i, --j) {
char temp_i = temp[i];
temp[i] = temp[j];
temp[j] = temp_i;
}
// 将反转后的单词插入原字符串
memmove(start, end + 1, len - (end + 1)); // 移动后续字符
strcat(start, temp); // 添加反转后的单词
start++; // 更新起始位置
}
}
// 如果最后一个单词没有遇到空格,直接复制到结果
if (start < end) {
strcpy(start, end);
}
}
int main() {
char str[] = "Hello World, This is a test.";
reverse_words(str);
printf("Reversed Words: %s\n", str);
return 0;
}
```
阅读全文