C 在字符串中循环,并用单词分隔?

C 在字符串中循环,并用单词分隔?,c,C,我正在尝试反转一个给定的字符串,我已经完全反转了它,但是现在我需要反转每个单词本身,以便它们可读 e、 g.输入:反转此字符串。 电流输出:.gnirts siht esreveR 所需输出:字符串。此项反向操作 有什么方法可以对每个特定单词再次运行字符串反转函数吗?对strok的每个结果再次运行反转算法 char* token = strtok(str, ' '); while (token) { reversedWord = YourReverseAl

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

e、 g.输入:
反转此字符串。

电流输出:
.gnirts siht esreveR

所需输出:
字符串。此项反向操作


有什么方法可以对每个特定单词再次运行字符串反转函数吗?

对strok的每个结果再次运行反转算法

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

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

对strtok的每次调用都会为您提供原始字符串的标记,直到定界字符,在您的示例中是“”。简单的conscise,并且有效。

如果您有一个反向函数,它接受字符串的开始和结束偏移量:

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;
}
void rstr(字符*s,整数开始,整数结束){
/* ... */
}
int main(){
char str[]=“这是一句话”;
int i,p;
rstr(str,0,strlen(str));

对于(p=i=0;i@ShivanRaptor我想用for循环遍历字符串,当它到达非空白文本时,存储该字符及其后的每个字符,直到下一个空白。然后我可以将其反转并放入新字符串中,并用其他单词重复此操作。我不知道当它到达非空白文本时如何让它停止空格字符或当它到达空白字符时。