2013-02-20 4 views
-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); 
} 
+2

,해야'그 (scanf와 ("% s '에, 문자열) = EOF!) 반면,'하지 않고 EOF의 *까지 문자열을 검색합니다 ** 그 (것)들과 함께 ** 마지막으로 다음 글을 덮어 쓰는 것은 정확하게 도움이되지 못합니다. – WhozCraig

+0

콘솔에 80 'A'문자를 입력하면 어떻게됩니까? – SecurityMatt

답변

1

reverse() 및 printf() 호출은 while 루프 내에 있지 않으므로 각 호출이 한 번만 호출됩니다 (마지막으로 읽은 문자열의 경우).

그것은 내가 여기 추측하고있어

while (scanf ("%s", strings) != EOF) 
{ 
    reverse(strings, 0, strlen(strings)-1); 
    printf("\tThe reverse strings: \n%s\n",strings); 
} 
+0

글쎄 실제로 이것은 CTRL-D (EOF)까지 역순으로 입력 한 모든 줄을 인쇄 할 것입니다.하지만 실제로 그 일을하려고하는지 확실하지 않습니다. – pmrowla

+0

Ive가 그것을 시도했습니다. 이번에는 하나의 문자열로만 타이핑 할 수있는 부분을 변경합니다. 나는 혼란 스럽습니까? – user2093028

+0

처음에는 사용자가 되돌리려 고 할 일련의 문자열을 인쇄하도록 요청합니다. 그런 다음 그 문자열을 뒤집으십시오. 원래 EOF 입력이 없으면 하나의 문자열 만 허용합니다. – user2093028