0

我正在尝试反转给定的字符串,并且已经完全反转了它,但是现在我需要自己反转每个单词,以便它们可读。

例如输入:Reverse this string.

电流输出:.gnirts siht esreveR

所需的输出:string. this Reverse

有什么方法可以在每个特定单词上再次运行我的字符串反转功能吗?

4

2 回答 2

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;
}
于 2013-02-21T02:38:58.703 回答
0

对 strtok 的每个结果再次运行反向算法

    char* token = strtok(str, ' ');

    while (token)
    {
       reversedWord = YourReverseAlgorithm(token);
        token = strtok(0, ' ');
    }

对 strtok 的每次调用都会为您提供原始字符串的标记,直到分隔符,在您的情况下为 ' '。简洁明了,效果很好。

于 2013-02-21T02:36:16.130 回答