2014-09-23 2 views
1

학교용 프로그램을 만들고 있습니다. (수업은 Intro to C) 우리는 문자 맞추기 게임을 만들어야합니다. 이 단계에서 파일 input.txt을 열고 화면에 4 letters을 인쇄하려고합니다. 그래서 파일에 연결 중임을 알 수 있습니다. 내가 화면에 4 개 글자를 인쇄 할 printf없이 빌드 할 때, 그것을 잘 작동하지만, 내가 printf를 추가 할 때, 그것은처럼 나에게 오류를 제공합니다오류 C2106 : '='왼쪽 피연산자는 l 값이어야합니다.

error C2106: '=' left operand must be l-value 
IntelliSense: expression must be a modifiable lvalue 
warning C4047: '=' : 'int(_cdecl*)(constant char*,...)' differs 
in levels of indirection from 'int' 

누군가가 도와 드릴까요?

int main() 
{ 
    //declare additional variables 
    int gamesToPlay = 4, i = 0; 
    FILE *inptr; 
    int letter, win = 0, lose = 0; 

    //display instructions 
    //open file 
    //get number of games to play 
    scanf("%d", &gamesToPlay); 
    inptr = fopen ("input.txt", "r"); 

    for (i = 0; i < gamesToPlay; i++) 
    { 
     //get a letter from file 
     //Play one game (Call PlayOneRound function) 
     //tell the player if they won or lost 
     fscanf(inptr, " %c", &letter); 
     printf = letter; 
     //win = PLayOneRound(letter); 
    } 

    //close file 
    return 0; 
} 
+4

네,이'printf = letter; '는보기에 좋지 않습니다. – juanchopanza

+1

'int'에'% c'가있는'scanf'가 너무 뜨거워 보이지 않습니다. [그게'char' 여야합니다] (http://en.cppreference.com/w/c/io/fscanf) – WhozCraig

+1

코드를 올바르게 들여 쓰기 시작하십시오. 전체 학기 중에 두통을 덜어줍니다. –

답변

3

변수 letter의 유형은 char 해야합니다 그리고 당신은 printf = letter;을 사용할 수 없습니다. 컴파일러에서는 printf이이 문에서 변수가 될 것으로 예상합니다. 대신 사용하십시오 printf("%c", letter);

1

그래서, 내가 한 일은 몇 가지 사용자 의견을 고려하여 몇 가지 사항을 수정하는 것입니다. 첫째, printf 구문이 어떻게 작동하는지, 그리고 변수가 어떻게 호출되는지 더 잘 이해할 필요가 있습니다. main()의 처음 네 줄을보고 내가 어떻게 정리하고 변수 선언을 수정했는지 확인하십시오. 가장 중요한 것은 letterint에서 char으로 변경된 것입니다. 나에게 처음으로받은 scanf() 문은 자신이하는 일에 대해 불필요한 것처럼 보였지만 int에 읽으려면 %d을 사용해야한다면 나중에 사용할 수 있습니다.

또한 fclose() 파일을 닫는 데 적절한 문을 사용했습니다. 귀하의 의견을 대부분 남겼습니다.

전반적으로 잘하고 있습니다. 올바른 길을 가고 있습니다. 학습을 계속하고, 주름을 제거하고이 프로그램을 끝내기 위해 더 많은 것을 읽으십시오. 거의 거기!

int main() 
{ 
//declare additional variables 
int gamesToPlay = 4; 
int win = 0, lose = 0; 
char letter; 

FILE *inptr;          | <---- putting these two together is good practice 
inptr = fopen ("input.txt", "r");     | <---- 

for (int i = 0; i < gamesToPlay; i++) 
    { 
    //get a letter from file 
    //Play one game (Call PlayOneRound function) 
    //tell the player if they won or lost 
    fscanf(inptr, "%c", &letter); 
    printf("%c\n", letter);     <----- it is very important you know how to use printf correctly 
    //win = PLayOneRound(letter); 
    } 

    //close file 
    fclose(inptr);       <---- closing a file is important 

    return 0; 
} 
관련 문제