-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 ループ内にないため、それぞれ 1 回だけ呼び出されます (最後に読み取られた文字列に対して)。

そのはず

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 に答える