翻转字符串中的单词是C语言中常用的字符串操作之一,实现该功能的主要思路如下:
- 读入原字符串
- 按空格将字符串分割成单词数组
- 翻转单词数组
- 按照空格重新组合单词数组形成新的字符串
以下是实现该功能的完整代码:
#include <stdio.h>
#include <string.h>
void reverseWords(char* s) {
int len = strlen(s);
int i,j,k;
char temp;
// 翻转整个字符串
for (i = 0; i < len/2; i++) {
temp = s[i];
s[i] = s[len-i-1];
s[len-i-1] =temp;
}
// 翻转每个单词
j = 0;
for (i = 0; i < len; i++) {
if (s[i] == ' ') {
for (k = j; k < (i + j)/2; k++) {
temp = s[k];
s[k] = s[i-k+j-1];
s[i-k+j-1] =temp;
}
j = i+1;
}
}
// 翻转最后一个单词
for (k = j; k < (i + j)/2; k++) {
temp = s[k];
s[k] = s[i-k+j-1];
s[i-k+j-1] =temp;
}
}
int main() {
char str1[] = "the sky is blue";
char str2[] = " hello world! ";
// 测试代码
reverseWords(str1);
printf("%s\n", str1); // 输出 "blue is sky the"
reverseWords(str2);
printf("%s\n", str2); // 输出 " world! hello "
return 0;
}
其中,reverseWords函数实现了该功能,它将输入字符串原地翻转为单词翻转后的字符串。示例说明如下:
对于输入字符串"the sky is blue",翻转后的单词顺序为"blue is sky the"。
对于输入字符串" hello world! ",翻转后的单词顺序为" world! hello "。
注意,该函数的思路没有考虑诸如多个连续空格等情况,对于实际使用中具体需求需要进行修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言如何实现翻转字符串中的单词 - Python技术站