关于使用vs2019学习c语言时碰到的问题(一)

1. 返回值被忽略: "scanf":

使用scanf函数作标准输入时,vs2019会报错。

解决方案1:

添加宏定义。在程序最前面加      #define _CRT_SECURE_NO_DEPRECATE

解决方案2: 

将程序中的scanf()换成scanf_s()。scanf_s()需要在函数参数里声明元素数目以防止发生溢出,其中scanf-s()格式: scanf_s("%c", &a,sizeof(a));  例如:scanf_s("%c",&a,10)表示只读取输入字符串的九位(最后一位是\n)放入a中。

参考网址:严重性代码说明项目文件行禁止显示状态错误 C4996 fopen('fscanf'、strcmp):This function or variable may be unsafe. 最全解决办法_行走在路上的牙仔的博客-CSDN博客

2.vs光标变成灰色异常

解决:键盘shift+0操作


3.无法使用fflush(stdin)函数:

c语言中fflush(stdin)用于清空标准输入缓冲区,假如连续使用两个scanf()函数输入数据,有可能致使第一个的/n还存在于缓存区,导致输出结果为空格,因为在读取字符时字符不能被忽略。如图所示。自vs2015后fflush(stdin)就不能用了(使用时不会报错,但是没有清空缓冲区的效果)。

 

解决方案:把fflush(stdin)替换成rewind(stdin)

//#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>

//scanf用来读取标准输入(键盘输入),scanf把标准输入内的内容,需要放到某个变量空间里,因此变量必须取地址
int main()
{
    int i;
    char c;
    scanf_s("%d",&i,8);
    printf("i=%d\n", i);//把标准缓冲区的整型数读走了
    //rewind(stdin);//vs自从2015年后不能使用fflush(stdin);//清空标准缓冲区
    scanf_s("%c",&c,64);
    printf("c=%c\n", c);//输出字符变量
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,那么我们可以从以下几个方面来考虑贪吃蛇的实现: 1. 游戏界面:可以使用二维数组来表示贪吃蛇的游戏界面,每个格子可以存储蛇的身体或者食物的信息。 2. 蛇的移动:蛇的移动可以通过改变蛇头的坐标来实现,同需要更新蛇的身体的位置信息。 3. 蛇的长度:当蛇吃到食物,需要将蛇的长度增加1,并在蛇尾部增加一个新的身体部分。 4. 食物的生成:当蛇吃掉食物,需要在界面上随机生成新的食物。 5. 游戏边界的判断:在蛇移动,需要判断蛇头是否碰到了游戏界面的边界,如果碰到了边界则游戏结束。 以上是贪吃蛇游戏的一些基本思路,希望能帮到你。 ### 回答2: 贪吃蛇是一款经典的游戏,我们可以用C语言来实现一个简单的贪吃蛇。 首先,我们需要定义贪吃蛇的各个部分。通常,贪吃蛇由一个头部和一系列的身体块组成。我们可以使用一个二维数组来表示整个游戏场景,并使用一个结构体来表示贪吃蛇的每个身体块。结构体包含坐标x和y,即每个身体块在场景中的位置。 然后,我们需要定义贪吃蛇的移动规则。贪吃蛇的移动是基于用户的输入的,用户可以使用键盘的上、下、左、右键来控制蛇的移动方向。移动的规则是,当蛇移动,头部向指定方向移动一格,同身体块依次移动到上一个身体块的位置。 接下来,我们需要实现贪吃蛇的吃食物和增长的逻辑。我们可以在场景中随机地生成食物,并在贪吃蛇移动到食物位置,将食物吃掉并将蛇的长度增加一个身体块。 最后,我们需要处理游戏结束的逻辑。游戏结束的条件是,当蛇碰到边界或者与自己的身体相撞,游戏结束。 综上所述,我们可以利用C语言中的数据结构和逻辑控制语句来实现一个简单的贪吃蛇游戏。通过读取用户的键盘输入来控制蛇的移动方向,实刷新蛇和食物的位置,并检测游戏是否结束,最后显示游戏的得分和提示信息。这是一个很好的练习项目,可以帮助我们学习和巩固C语言的基本知识和编程能力。 ### 回答3: 贪吃蛇是一款经典的游戏,具有很高的可玩性。下面我将用300字的篇幅介绍如何用C语言编写一个简单的贪吃蛇游戏。 首先,在C语言中,我们可以通过使用图形库(如graphics.h)来实现图形界面。图形库可以提供绘制窗口、画布、控制鼠标、键盘事件等功能,非常方便。 其次,为了实现贪吃蛇,我们需要定义一系列的结构体和变量来存储贪吃蛇的位置、身体长度、方向等信息。例如,可以定义一个代表蛇的结构体,包含一个链表来存储蛇身的每一个节点(每个节点有坐标信息)。 接下来,我们需要设定游戏的界面和基本规则。创建一个窗口来显示游戏界面,并设定蛇的初始位置和长度。在游戏过程中,每当蛇吃到一个食物,就会增加身体长度,并且更新蛇的位置。另外,还要监测蛇头是否碰到墙壁或者自身,如果发生碰撞,则游戏结束。 为了使游戏更加有趣,可以设定难度等级。例如,可以增加蛇运动的速度或增加障碍物的数量,同也可以增加食物的种类和分数,让游戏具有更高的挑战性。 最后,在游戏过程中,需要监听键盘事件来控制蛇的移动方向(上、下、左、右)。根据键盘的输入,改变蛇的方向,并实更新蛇的位置和绘制游戏界面。 总之,编写贪吃蛇游戏是一个相对简单但也有趣的项目。通过合理的设计和代码实现,可以让我们更好地理解C语言的基本语法和逻辑控制,并且提高我们的编程水平。希望我的回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值