首页 > 其他分享 >一篇文章教你如何解决vs编译器中,库函数scanf的正常使用!!!

一篇文章教你如何解决vs编译器中,库函数scanf的正常使用!!!

时间:2024-06-15 17:33:31浏览次数:24  
标签:函数 scanf 源文件 编译器 vs 使用 库函数

前言:

这将是我写的第二篇博文了,以后我将会坚持每天花固定时间来写博客,希望我当我写了一定数量的文章之后,我自己简单的就能够写出质量优秀文章来,加油!!!

一、scanf函数无法正常使用的原因

1.错误实例

在vs中如果想直接实现并使用scanf函数,很抱歉直接使用,用不了,因为编译器压根就无法执行使用了scanf函数的代码,编译器会提示错误给你;
错误就如下图所示:
在这里插入图片描述

2.scanf_s的由来

看到上面那张图片大家可能会疑惑,这张图片上的scanf_s又是什么,他其实是vs编辑器,也就是微软自己创造的的一个库函数,造这个函数的原因是,在vs编译器上使用scanf不是不安全吗,我就造一个与scanf函数功能一样,且我认为使用会安全的函数也就是scanf_s,这就是scanf_s函数的由来;

3.使用scanf_s的注意事项

  • scanf_s跟scanf的使用方式不完全一样;
  • scanf_s只能够在vs中使用,他是在vs中造出来的,仅限于在vs中使用;
  • scanf_s在别的编译器上使用,编译器是不认识scanf_s是什么,是无法正常使用的;
  • scanf_s相对于scanf,scanf可以在除了vs编译器上的其他编译器上都可以直接使用,而scanf_s的使用范围,就局限于vs中;

如果要想用vs中的scanf_s函数,要注意的点,也就是我上面列举出来4点

二、解决scanf并能够使用的办法

前情提要在章标题一的内容部分,我讲述了为什么无法使用scanf,以及scanf_s是啥;
需求:我就是想在vs中使用scanf函数,而不想使用vs认为使用会更为安全的scanf_s函数,解决办法如下;

1.纯手动解决

解决方法(图例):
步骤一:
在这里插入图片描述
步骤二:
在这里插入图片描述
步骤三:
在这里插入图片描述

注意事项:

  • 该命令只能放在源代码第一行,不能放在其他行;
  • 要是创建一个新的源文件,正常使用scanf函数,第一行也得加上该命令,vs中多个源文件都想正常使用scanf函数,第一行都得加上该命令;
  • 要注意#define与后面的内容是至少要有一个空格的;

命令:#define _CRT_SECURE_NO_WARNINGS(直接复制到vs中就可以用了);


该命令不能放在第二排,如下图所示
在这里插入图片描述

2.便利的解决


纯手动解决的缺点纯手动解决,过于机械和重复,需要每次在创建新的源文件时,想使用scanf函数,每次得在第一行添加这个命令:#define _CRT_SECURE_NO_WARNINGS,不太推荐


便利解决的优点按照操作进行设置,就能每次在创建新的源文件时,会在第一行自动生成该命令:#define _CRT_SECURE_NO_WARNINGS,相对于纯手动解决,更加便捷和方便,推荐使用;


便利解决的方法教程

  • 步骤一:电脑上要先下一个工具,这个工具名字叫做everything,点击蓝色的字体也就是everything即可跳转到官网下载地址;
  • 步骤二:下载好后,进入软件,在软件的最上方的一行格子内输入newc++file.cpp这个文件名,要注意部分人可能在输完文件名后,会查询到多个相同文件名的文件,这些相同文件名的文件中,只有一个是我们要用到的,除了要用到的,其他的都是临时文件,这个一定要选对,那要怎么选呢,通常要选择正确的文件,其文件地址只要是跟自己的vs下载地址对的上号的则就是了,选完之后单击右键,选择路径即可跳转到对应的文件目录下;
  • 步骤三:到了对应的文件目录后,目录中会有newc++file.cpp这个文件,我们选中它单击右键,选择在记事本中编辑,编辑打开后,不管里面有啥内容,我们把这句话#define _CRT_SECURE_NO_WARNINGS给复制粘贴进去,替换掉打开记事本编辑之后的默认内容,替换完成后,按Ctrl+S保存即可,然后这时后,系统可能会告知你权限不够,首先不要退出了该文件所在的目录,如果不小心退出了,先不要慌,我们再次使用everything工具搜索文件名,找到文件还是单击右键,选择路径,之后就可以再次回到文件所处的原目录下,要是遇到这种情况我们先把该目录下的文件,给复制一份到电脑桌面上,再在电脑桌面单击右键该文件,还是跟前面的操作一样,选择记事本编辑,也是先把这句话复制进去,替换掉里面默认打开后的内容,复制粘贴后,我们也是先按Ctrl+S保存替换好的内容,再把桌面上保存好了的文件,给复制一份,然后再来到newc++file.cpp文件所在的目录下,把桌面上复制好的文件,直接Ctrl+V粘贴,用桌面上编辑保存并复制下来的的newc++file.cpp,替换掉在目录下的newc++file.cpp即可;

完成以上步骤流程,这时候在vs中新建源文件,每次即可在源文件中的第一行自动生成该命令#define _CRT_SECURE_NO_WARNINGS


下面展示的是完整的一个步骤流程,顺带过一下如何创建项目,以及在项目中如何创建源文件;


还不会创建项目,以及在项目中创建源文件的宝子可要认真做好笔记学习了
流程一:
在这里插入图片描述
流程二:
在这里插入图片描述
流程三:
在这里插入图片描述
流程四:
在这里插入图片描述
流程五:
在这里插入图片描述
在流程五中可能会遇到的情况
在这里插入图片描述
流程六:

在这里插入图片描述
流程七:
在这里插入图片描述
流程八:
在这里插入图片描述


结言:

  • 希望我的这篇文章,能够对有需求的人,产生一定的帮助,在此希望我们都能够天天开心,每天乐观积极、事业有成,然后实现自己的理想与抱负,也请你们共同见证我的成长,而我也会陪伴你们共同前行,最后我在这里谢谢大家了;

标签:函数,scanf,源文件,编译器,vs,使用,库函数
From: https://blog.csdn.net/Q1783698366/article/details/139562044

相关文章

  • 【C++修行之道】类和对象(六)再谈构造函数(初始化列表)| explicit关键字 | static成员 |
    目录一、再谈构造函数1.1构造函数体赋值1.2初始化列表1.所有的成员,既可以在初始化列表初始化,也可以在函数体内初始化2.每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)3.类中包含以下成员,必须放在初始化列表位置进行初始化:声明给缺省值也可以是其......
  • c语言编译器的分类
    前言在上节《C语言编译和链接》中我们已经讲解了C语言编译器的概念,由于C语言的历史比较久,而且早期没有规范,整个计算机产业也都处于拓荒的年代,所以就涌现了很多款C语言编译器,它们各有特点,适用于不同的平台,本节就来给大家科普一下。我们分两部分介绍C语言的编译器,分别是......
  • 【java】JVM前端编译器的局限性
    目录1.不涉及编译优化2.功能限制3.静态编译特性4.与AOT编译器的对比1.不涉及编译优化1.前端编译器的主要任务是将符合Java语法规范的Java代码转换为符合JVM规范的字节码文件2.并不会直接涉及编译优化等方面的技术。3.具体的优化细节通常是由HotSpot的JIT(Jus......
  • c# 编译器是如何帮我们实现方法重载 重写的
    在C#中,编译器通过以下方式帮助我们实现方法重载(Overloading)和方法重写(Overriding):方法重载(MethodOverloading)原理:编译时解析:C#编译器在编译阶段根据方法调用时提供的参数类型和数量来决定调用哪个重载版本。这个过程称为静态绑定或早期绑定,因为它发生在编译时期。签名匹配:编......
  • 解决C语言中scanf函数无法输入直接跳过的问题
    如果比较急的话,可以直接用这些方法,不急的话,建议读完。方法:1、看在调用该scanf函数前有没有用键盘输入过数据,有的话,可以尝试在该scanf函数前加个getchar();吃掉'\n'。2、在scanf前加一句"rewind(stdin);"(双引号里面的语句,不要把双引号也复制或打上去了),或者"fflush(stdin);",后......
  • 6.C语言scanf及其他输入知识点
    C语言scanf相关用法及其他输入1—scanf输入的用法2—scanf注意的问题3—其他输入1—scanf输入的用法程序#include"stdio.h"intmain(){ intdata; intdata2; intdata3; printf("输入一个整数:\n"); scanf("%d",&data); printf("输入完毕\n"); printf(......
  • scanf(),gets(),puts(),fgets()函数的使用
     scanf()scanf按%d输入数字或%s输入字符串时,忽略空格、回车或制表符等空白字符(被作为数据的分隔符) intmain(){ inta=0; intb=0; charc[12]; scanf("%s",&c); printf("c=%s",c); return0;}空格后面的world没有被读进去加一句scanf语句,world被读走了in......
  • 用fscanf\fprintf fgetc\fputc fgets\fputs实现文件拷贝。
     1.fscanf\fprintf#include<stdio.h>intmain(intargc,constchar*argv[]){FILE*fp=fopen("./1.c","r");if(NULL==fp){perror("fopen");return-1;}FILE*fp1=fopen......
  • <编译器> 7. 中间代码 | 5. 程序设计
    IR代码中符号代码(label)沿用不变int调用T_Const(inti)Tree模块:1.patchList:真值/假值回填表这里是patchList的生成,至于具体怎么回填后面才会讲structpatchList_{Temp_label*head;patchListtail};//生成stmstm=T_Cjump(T_ge,unEx(......
  • 【ubuntu使用记录】—— 如何使用vim编译器如何写入保存文件和linux常用的操作指令记
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言vim编译器的使用1.写入的操作2.保存的操作常用的系统操作指令1.查看系统配置2.查看库的版本3.基本操作指令4.解压和压缩相关指令(1)安装rar和unrar工具(2)使用前言在Ubuntu中,使用......