2014-09-23 64 views
1

我做节目的学校(我的班级简介C),我们必须创建一个字母猜谜游戏。在这个阶段,我只是试图打开文件input.txt并在屏幕上打印4 letters,因此我知道它正在连接到该文件。当我建立它没有printf打印4个字母在屏幕上,它工作正常,但是当我加入printf,它给了我这样的错误:错误C2106:“=”左操作数必须是左值

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 2014-09-23 22:12:30

+1

现在''scanf''%c'变成'int'现在看起来也不是那么热。 [这应该是'char'](http://en.cppreference.com/w/c/io/fscanf) – WhozCraig 2014-09-23 22:19:41

+1

现在开始缩进代码。它将在整个课堂期间为您节省头痛。 – 2014-09-23 22:20:14

回答

3

变量类型letter应该是char 你不能使用printf = letter;。编译器期望printf是此语句中的变量。而是使用printf("%c", letter);

1

那么,我在下面做的是解决一些事情,考虑到一些用户的意见。首先,您需要更好地掌握printf语句的工作方式以及如何调用变量。看看main()的前四行,看看我是如何整理和修正你的变量声明的;最重要的是的letterintchar的变化。对我来说,你的第一个scanf()声明看来是多余的,你在做什么,但是你可以使用它在将来,如果你一定要使用%d在一个int阅读。

我还使用了适当的语句来关闭该文件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; 
} 
相关问题