-3

我遇到了一个问题,我的一系列字符串没有按照我想要的方式打印出来。它只打印最后一个字符串并反转最后一个字符串,而不是之前的任何字符串。任何人都可以帮助我吗?

#include <stdio.h>
#include <string.h>

void reverse(char strings[80], int start, int end);
int main (void){

  char strings[80];

  printf("\tEnter a string to reverse: \n");
  while( scanf ("%s", strings) !=EOF);

  reverse(strings, 0, strlen(strings)-1);
  printf("\tThe reverse strings: \n%s\n",strings);

return 0;}
void reverse(char strings[80], int start, int end)
{
  char A;
  if (start >= end)
  return;

  A = *(strings+start);
  *(strings+start) = *(strings+end);
  *(strings+end) = A;

  reverse (strings, ++start, --end);
}
4

1 回答 1

1

您对 reverse() 和 printf() 的调用不在 while 循环内,因此它们仅被调用一次(对于读取的最后一个字符串)。

它应该是

while (scanf ("%s", strings) != EOF)
{
    reverse(strings, 0, strlen(strings)-1);
    printf("\tThe reverse strings: \n%s\n",strings);
}
于 2013-02-20T21:33:18.860 回答