2012-11-13 2 views
2

이 과제가 주어졌으며 지금까지 작성한 코드입니다. 이 코드는이 편지보다 더 많은 일을해야 하나 편지를 받고있다, 그래서 나는 단어를 입력 할 수 있으며 모스 부호에있을 것c 프로그래밍 스캔

#include "stdafx.h" 
#include <ctype.h> 
#include <stdlib.h> 
#include <string.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    char input[80], str1[100]; 

    fflush(stdin); 
    printf("Enter a phrase to be translated:\n"); 
    scanf("%c", &input); 
    int j = 0; 
    for (int i = 0; i <= strlen(input); i++) 
    { 
     str1[j] = '\0'; 
     switch(toupper(input[i])) 
     { 
      .................. 
     } 
     j++; 
    } 
    printf("\nMorse is \n %s\n", str1); 
    fflush(stdout); 
    //printf("%s\n ",morse); 
    free(morse); 
} 
+0

@Nikolai 찾고 : 참조 : HTTP : //meta.stackexchange .com/questions/147100/the-homework-tag-is-now-official-deprecated – Default

+0

모스 끈에 대한 기억을 거의 할당하지 마십시오! 'char morse [] = "...";' –

+0

과 같이 배열로 선언하고 초기화하지 않는 것이 좋습니다. 먼저 숙제 질문에 표시하십시오. 그런 다음 ASCII 코드로 인덱싱 된 힌트 - 정적 테이블을 사용하여 문자를 모스 코드 문자열에 매핑합니다. –

답변

6

귀하는 scanf는 하나의 문자를 기대 %c 있습니다. 제왕의 문자열을 읽 %s를 사용 scanf()

scanf("%s", input); 

인수 포인터 유형입니다. C 문자열 이름이 첫 번째 요소에 대한 포인터이기 때문에 address-of (&)를 말할 필요가 없습니다.

한 문자 만 읽으려면 &을 사용해야합니다.

예컨대 :

scanf("%c", &input[i]); // pass the address of ith location of array input. 
+0

답변에서 포인터 인수를 수정했지만 잘못된 유형의 원본을 명시 적으로 언급하는 것이 좋습니다. –

+0

@DanielFischer 설명으로 업데이트되었습니다. –

+1

고마워, 아주 좋아. 하지만 편집 된 버전을 다시 보급하는 것은 취소하지 않을 것입니다.) –

2

%s하지 %c를 사용하여 문자열을 읽습니다. 또한 문자열은 이미 포인터이므로 주소를 가져올 필요가 없습니다. 그래서 변환 :

scanf("%c", &input); 

로 :

scanf("%s", input); 
2

scanf("%c", &input);는 단일 문자를 읽습니다, 당신은 아마 scanf("%s", input);

+3

입력 앞의'&'를 제거하십시오. –

+0

실제로 빠른 복사/붙여 넣기 실수 – emartel