我正在尝试反转给定的字符串,并且已经完全反转了它,但是现在我需要自己反转每个单词,以便它们可读。
例如输入:Reverse this string.
电流输出:.gnirts siht esreveR
所需的输出:string. this Reverse
有什么方法可以在每个特定单词上再次运行我的字符串反转功能吗?
我正在尝试反转给定的字符串,并且已经完全反转了它,但是现在我需要自己反转每个单词,以便它们可读。
例如输入:Reverse this string.
电流输出:.gnirts siht esreveR
所需的输出:string. this Reverse
有什么方法可以在每个特定单词上再次运行我的字符串反转功能吗?
如果您有一个接受字符串的开始和结束偏移量的反向函数:
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;
}
对 strtok 的每个结果再次运行反向算法
char* token = strtok(str, ' ');
while (token)
{
reversedWord = YourReverseAlgorithm(token);
token = strtok(0, ' ');
}
对 strtok 的每次调用都会为您提供原始字符串的标记,直到分隔符,在您的情况下为 ' '。简洁明了,效果很好。