我正在为学校制作一个节目(我的课程是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;
}
答案 0 :(得分:3)
变量letter
的类型应为char
你不能使用printf = letter;
。编译器期望printf
是此语句中的变量。而是使用printf("%c", letter);
答案 1 :(得分:1)
所以,我在下面做的是修复一些事情,考虑到一些用户评论。首先,您需要更好地掌握printf语句的工作方式以及如何在其中调用变量。查看main()
的前四行,看看我如何整理和纠正变量声明;最重要的是letter
从int
更改为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;
}