侧边栏壁纸
  • 累计撰写 278 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

新手C语言学习(1)

xuanxuan
2020-11-26 / 0 评论 / 0 点赞 / 1 阅读 / 2077 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-02-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

新手C语言学习(一)

        在昨天的c语言学习中所发现值得积累的东西。         首先,在vs2017中,无法识别scanf困扰了我一下,于是我去网上搜索解决办法,借鉴这位老哥一下(链接)就是依次点开项目-属性-c/c++-预处理器,然后_CRT_SECURE_NO_WARNINGS输入,应用就完事了。         归咎其原因,就是微软认为scanf不安全,于是在此之前我又在网上搜,说把scanf改成scanf_s就可以,我也就没仔细了解,反正在后面加了个_s倒是不报错了,结果在运行代码的时候,虽然可以运行,但却一直会有个弹窗在这里插入图片描述         我又去企鹅群里询问大佬,原来并不是scanf_s的问题,而是我在定义变量的时候出了问题,将一串字符串往字符变量里面怼,所以就出现了这个报错问题。之后更改,问题终于成功解决了。         我的代码如下:

#include <stdio.h>
int main(void)
{
    //定义字符变量
    char prove;
    //数组 字符串
    char password[20] = { 0 };
    printf("请输入密码:");
    //数组本身就是地址不用加&
    scanf("%s", password);
    //回收\n防止他干预下面的接收 
    //在代码运行窗口输入的回车也会被当做字符而被获取
    getchar();
    printf("请确认密码Y/N:");
    prove = getchar();
    if (prove == 'Y')
        printf("确认成功");
    else
        printf("确认失败");
    return 0;
}

        在这之中,就是getchar的用法比较重要,在代码运行窗口输入的回车,也会被当做字符而被获取,这就不得不提到缓冲区这个概念了,我们输入的东西,会先被系统放到缓冲区上,然后getchar()会在缓冲区读取我们所输入的东西,一次只能获取一个东西,因为也会把回车当做字符而获取,所以要让他停下来就要在之后加入一个getchar()将缓冲区的\n(回车)清空,才可以顺利地执行下一个命令参考这位老哥链接

         我还发现了一个问题就是,有时在scanf下可以顺利运行的代码,但在scanf_s上打完回车就换个行,不继续进行运行,在这里插入图片描述 暂时还不知道产生的原因。

0

评论区