我要颠倒字符串中的单词。我觉得自己朝着正确的方向前进。但是我一直在输出不稳定的信息,并且不禁认为这与我的strncat()函数有关。你们有没有看到我决定处理的任何问题。我愿意就其他方式提出建议。

int main()
{
  int ch, ss=0, s=0;
  char x[3];
  char *word, string1[100], string2[100], temp[100];
  x[0]='y';

  while(x[0]=='y'||x[0]=='Y')
  {
    printf("Enter a String: ");
    fgets(string1, 100, stdin);
    if (string1[98] != '\n' && string1[99] == '\0') { while ( (ch = fgetc(stdin)) != EOF && ch != '\n'); }

    word = strtok(string1, " ");

    while(word != NULL)
    {
      s = strlen(word);
      ss=ss+s;

      strncpy(string2, word, s);
      strncat(string2, temp, ss);
      strncpy(temp, string2, ss);

      printf("string2: %s\n",string2);
      printf("temp: %s\n",temp);
      word = strtok(NULL, " ");
    }

    printf("Run Again?(y/n):");
    fgets(x, 2, stdin);
    while ( (ch = fgetc(stdin)) != EOF && ch != '\n');
  }

  return 0;
}


这是我的输出:

Enter a String: AAA BBB CCC DDD EEE

string2: AAA
temp: AAA

string2: BBBAAA
temp: BBBAAA

string2: CCCAAABBBAAA
temp: CCCAAABBB

string2: DDDAAABBBAAACCCAAABBB
temp: DDDAAABBBAAA

string2: EEE
AABBBAAACCCAAABBBDDDAAABBBAAA
temp: EEE
AABBBAAACCCA

最佳答案

您需要“至少”初始化strcat()参数的第一个字节,因为它希望其参数以nul终止,因此

string2[0] = '\0';


会有所帮助,但是您第一次不需要strcat(),可以改用strcpy()

关于c - 反转字符串中的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32615231/

10-11 22:09