我正在尝试反转一个给定的字符串,我已经完全颠倒了它,但现在我需要单独反转每个单词,以便它们可读。
e.g。输入:Reverse this string.
当前输出:.gnirts siht esreveR
所需的输出:string. this Reverse
我是否可以通过某种方式在每个特定单词上再次运行字符串反转功能?
答案 0 :(得分:1)
如果你有一个反向函数接受字符串的开始和结束偏移:
void rstr(char *s, int start, int end) {
/* ... */
}
int main(){
char str[] = "this is a sentence of words";
int i, p;
rstr(str, 0, strlen(str));
for (p = i = 0; i <= strlen(str); i++) {
if (str[i] == ' ' || i == strlen(str)) {
rstr(str, p, i);
p = i + 1;
}
}
printf("%s\n", str);
return 0;
}
答案 1 :(得分:0)
在strtok的每个结果上再次运行你的反向算法
char* token = strtok(str, ' ');
while (token)
{
reversedWord = YourReverseAlgorithm(token);
token = strtok(0, ' ');
}
每次调用strtok都会为你提供原始字符串的标记,直到分隔字符,在你的情况下是''。简单的锻炼和工作。