2015-01-18 5 views
-9

이 c 프로그램을 작성했지만 항상 동일한 입력 문장을 변경없이 수신합니다. ! 나는 그들의 위치를 ​​반대하지만 잘 작동 didnt는 다음 문자열에있는 모든 단어를 분할했습니다! 어떤 솔루션을하시기 바랍니다!문자열의 각 단어를 뒤집는 프로그램. 이전 솔루션을 읽었지만 여기서는 함수를 사용하여 찾고 있습니다.

#include<stdio.h> 
#include<conio.h> 
#include<string.h> 
int main() 
{  
    char A[81][81]; 
    int t=0,j=1,k=0,l; 
    puts("Input a sentence (max 80 character)"); 
    gets(A[0]); 
    while (A[0][t]!='\0') 
    { 
     if(A[0][t]=='\32') 
     { 
      j++; 
      t++; 
      k=0; 
     } 
     A[j][k]=A[0][t]; 
     k++; 
     t++; 
    } 
    for (l=j;l>0;l--) 
    { 
     printf("%s",A[l]); 
    } 
    getch(); 
} 
+1

는 입력과 예상 출력이 무엇인지에 관해서는 더 명확 해주십시오. –

+0

예를 들어! 내가 입력 한 "사미가 집에 도착했습니다"필요한 "집에 도착한 사미"가 들어 있지만 출력은 단어의 역전없이 입력으로 주어집니다 –

+0

문자열의 모든 단어를 나누어 각 단어를 배열에 배치 했으므로 사용자가 각 단어 대신 문자를 입력 할 수 있으므로 해당 문자를 나누는 데 더 많은 배열이 필요할 수 있습니다. –

답변

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

int main(void){ 
    char A[81][81] = {0}; 
    int t=0,j=1,k=0,l; 
    puts("Input a sentence (max 80 character)"); 
    scanf("%80[^\n]", A[0]);//'gets' has already been abolished, it should explore a different way. 
    while (A[0][t] != '\0'){ 
     if(A[0][t] == ' '){ 
      ++j; 
      k=0; 
      while(A[0][t] == ' ')//Skip spaces 
       ++t; 
     } else { 
      A[j][k++] = A[0][t++]; 
     } 
    } 
    for (l=j;l>0;l--){ 
     printf(" %s",A[l]); 
    } 
    puts(""); 
    getch(); 
} 
+2

코드에 약간의 코멘트를주십시오. –

+0

프로그램의 구조가 거의 동일하기 때문에 변경된 부분에 문제가 있습니다. LOL. 그것은 OP에 의해 의도 된대로 다시 작성됩니다. – BLUEPIXY

+0

일부 사람들은 믿을 수없는 낮은 능력의 사람들로 확신합니다. – BLUEPIXY