错误C2106:'='左操作数必须是l值

时间:2014-09-23 22:11:09

标签: c printf

我正在为学校制作一个节目(我的课程是C的简介),我们必须创建一个猜信游戏。在这个阶段,我只是试图打开文件input.txt并打印4 letters到屏幕上,所以我知道它正在连接到文件。当我在没有printf的情况下构建它来在屏幕上打印4个字母时,它工作正常,但是当我添加printf时,它会给我一些错误:

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;
}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

所以,我在下面做的是修复一些事情,考虑到一些用户评论。首先,您需要更好地掌握printf语句的工作方式以及如何在其中调用变量。查看main()的前四行,看看我如何整理和纠正变量声明;最重要的是letterint更改为char。对我来说,你的第一个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;
}