2017-11-05 3 views
-1

나는 모르스를 텍스트로, 그리고 그 반대로 번역하는 코드를 작성했다. 그러나, 나는 그들을 더 간단한 기능으로 만드는 데 어려움을 겪고있다. 코드를 두 개의 소스 코드 파일 (morse.c와 main.c)과 하나의 헤더 파일 morse.h로 나눌 필요가있는 makefile에 코드를 제출해야합니다. 메이크 파일에 관한 문제는 없지만 m 코드를 함수로 분리하고 더 명확하게하기 위해 전역 변수를 사용하지 않아야합니다.가독성을 높이기 위해 코드를 함수로 분할하는 방법은 무엇입니까?

코드 : https://onlinegdb.com/BJiDmG2A-

어떤 조언이나 방향을 정말 감사하겠습니다. , 당신이 코드가 "완료 한 후 기능을 구현하는 것보다 기능을 쓰기 시작하는 것이 좋습니다

그냥 지금은 함수에 작은 부분을 시도하지만

if (input[0] == '.' || input[0] == '-') 
    { void MorseToText (input); 
     printf("%s", result); 
    } //go for morse to text conversion 

    void MorseToText (char input,char result) 
{    
    // Morse to Text translation part 
    const char s[MATCH] = " "; 
    char *section; 
    int l; 
    int check = 0; 

    section = strtok (input, s); 

    do 
    { 
     for (l = 0; l < DATA; l++) 
     { 

      if (!strcmp (section, table[l].morse)) 
      { 
       check = check + 1; 
       result = result + table[l].ascii; //printf ("%s", table[l].ascii); 
      } 
     } 

     if (check == 0) 
     { 
      printf ("Invalid Morse code!\n"); 
      return 0; 
     } 
     section = strtok (NULL, s); 
    }while (section != NULL); 
    printf ("\n"); 

    return 0; 
} 
+2

코드를 복사하여 여기에 붙여 넣으십시오. 외부 링크에 코드를 게시하는 것은 허용되지 않습니다. 링크가 썩어지면 –

+0

매개 변수 "input"이 "char *"로 캐스팅되어야하는 문자열입니다. void 함수에서 0을 반환하는 이유는 컴파일러에서 경고를 생성해야합니다. –

답변

0

잘 작동하지 않습니다 ".

나는 또 다시 하나의 작업을 완료 코드를 보일 것이다 (출력을 표시 한 다음 havinga 함수 변환을 수행 기능을하는, 예를 들어.)

당신은 반환 값에 관심이있을 수 있습니다. 이렇게하면 전역 변수를 사용하지 않고 함수가 다른 함수와 상호 작용할 수 있습니다.

+0

제발,이 기능에 문제가 있습니까? –

+0

결과가있는 것 같지만 반환하지는 않습니다. 함수의 시작 부분에서 "result"를 0으로 설정하고 확인 후 함수 실행 마지막에 반환 할 값으로 변경하고 싶을 것입니다. 그런 다음 결과 값을 반환하십시오. (0이면 오류가 발생하고, 그렇지 않으면 값이 유지됩니다) – iPhoenix