C语言输入一行字符串,所有内容保持相对位置,将单词翻转。字符串总长度未知,单词数量未知,每个单词不超过20个字母。测试数据保证输入的字符只含英文字母和空格。
时间: 2024-06-15 14:07:14 浏览: 85
要实现将一行字符串中的单词翻转,可以按照以下步骤进行操作:
1. 首先,我们需要读取一行字符串作为输入。在C语言中,可以使用`fgets()`函数来读取一行字符串,并将其存储在一个字符数组中。
2. 接下来,我们需要将字符串中的每个单词进行翻转。可以通过以下步骤来实现:
- 遍历字符串中的每个字符,直到遇到空格或者字符串结束符`\0`。
- 当遇到空格或者字符串结束符时,将当前单词进行翻转。可以使用两个指针,一个指向当前单词的起始位置,另一个指向当前单词的结束位置。交换这两个指针所指向的字符,然后分别向前和向后移动指针,直到它们相遇为止。
- 继续遍历字符串中的下一个单词,直到遇到字符串结束符`\0`。
3. 最后,将翻转后的字符串输出即可。
下面是一个示例代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverseWord(char* start, char* end) {
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
void reverseString(char* str) {
int len = strlen(str);
char* start = str;
char* end = str;
while (*end != '\0') {
if (*end == ' ') {
reverseWord(start, end - 1);
start = end + 1;
}
end++;
}
reverseWord(start, end - 1);
reverseWord(str, end - 1);
}
int main() {
char str[100];
printf("请输入一行字符串:");
fgets(str, sizeof(str), stdin);
// 去除换行符
str[strcspn(str, "\n")] = '\0';
reverseString(str);
printf("翻转后的字符串:%s\n", str);
return 0;
}
```
阅读全文