我遇到一个问题,我的系列字符串不会按照我想要的方式打印出来。它只打印出最后一个字符串并反转最后一个字符串,但不会反转之前的任何字符串。有人可以帮帮我吗?
#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);
}
答案 0 :(得分:1)
你对reverse()和printf()的调用不在while循环中,所以它们只被调用一次(对于最后读取的字符串)。
应该是
while (scanf ("%s", strings) != EOF)
{
reverse(strings, 0, strlen(strings)-1);
printf("\tThe reverse strings: \n%s\n",strings);
}