2015-01-21 6 views
0

이것은 영숫자를 모스 코드로 변환하는 미완성 코드이다. 지금까지 문자 "A"만 설정되어 있습니다. 변수 "c"에 "a"의 모스 코드 문자열을 복사 할 수 없습니다. 컴파일러는 인수 1을 strcpy으로 전달하면 캐스팅하지 않고 정수에서 포인터를 만듭니다. a이 문자열 동안나는 strcpy를 알아낼 수 없다.

#include <stdio.h> 
#include <ctype.h> 
#include <string.h> 

int main(){ 
    char c; /* variable to hold character input by user */ 
    char sentence[ 80 ]; /* create char array */ 
    int i = 0; /* initialize counter i */ 
    const char *a = ".- "; 

    /* prompt user to enter line of text */ 
    puts("Enter a line of text:"); 

    /* use getchar to read each character */ 
    while ((c = getchar()) != '\n') { 
     c = toupper(c); 
     switch (c){ 
      case 'A': 
       strcpy(c, a); 
       break 
      } 
     sentence[ i++ ] = c; 
    } /* end while */ 

    sentence[ i ] = '\0'; /* terminate string */ 

    /* use puts to display sentence */ 
    puts("\nThe line entered was:"); 
    puts(sentence); 
    return 0; 
} 
+1

''int' (안'char')를 반환 getchar', INT의 C '로 변경 다음은 맨 페이지에서 서명입니다 'char')을 첫 번째 인수로 사용합니다. –

+2

작성된 strcpy의 대상은'char'입니다. 그것은'char *'일 필요가 있습니다. – WhozCraig

+0

'strcpy' (strcopy가 아님)은 문자열을 문자열로 복사하고 문자열을 char로 복사하지 않습니다. – bolov

답변

0

c는 단일 문자 (설명하는 두 c은 하나의 문자를 저장할 수있는, 그리고 왜 컴파일러가 불평하는 이유). c에 전체 문자열을 저장하려면 (예 : sentence처럼) 해당 문자열을 선언하십시오.

0

당신은 유형 char 가지고 변수 c를 선언 한 : 그런 다음

char c; 

당신이 strcpy(c,a)을 사용하려는를 -하지만 strcpy는 첫 번째 인수에 대한 유형을 기대 하시는가? strcpy`는`숯불 *`(안 원하는``, 그리고,

char *strcpy(char *dest, const char *src);