不多废话,先上代码

注意查看函数fputs_FILE,该函数的两行代码fopen_s是同样的,但事实上:

  第一条fopen_s执行起来会报错,但是第二条就不会!!!

/*
练习:获取用户键盘输入,写入文件中
*/
#include"head.h" int fgets_stdin(char *buf,int a) {
fgets(buf, a, stdin);
return EXIT_SUCCESS;
} int fputs_FILE(char *buf) {
FILE *fp;
fopen_s(&fp, "‪C:/Users/a/source/repos/ConsoleApplication7/fgets_stdin_fputs_FILE.txt","w+" );
//fopen_s(&fp, "C:/Users/a/source/repos/ConsoleApplication7/fgets_stdin_fputs_FILE.txt","w+" );
if (fp==NULL) {
perror("fopen_s");
return -1;
} fputs(buf, fp);
fclose(fp);
return EXIT_SUCCESS;
} int main() {
char buf[10] = { 0 };
fgets_stdin(buf,sizeof(buf) );
//printf("%s \n", buf);
fputs_FILE(buf); system("Pause");
return EXIT_SUCCESS;
}

  

第一行的fopen_s  :fopen_s(&fp, "‪C:/Users/a/source/repos/ConsoleApplication7/fgets_stdin_fputs_FILE.txt","w+" );

最终每行开始排查,发现在第一行的参数二的位置”“内部有一个东西,类似于字符,可以让光标多移动一次,但是却并没有显示,即使复制粘贴到notepad++上也看不到该字符(该字符不同于回车或者换行)。

把该字符删除即可成功运行。

总结:

  这就很懵,同样的代码竟然有了不同的结果,就好比在学习一个灯泡在多大的电压可以点亮时,突然发现,在220V下面点亮了,但是偶尔几次不亮,这就很违背物理常识了。

想起了一个问题:无神论造神(无神论创造物理定律等)。

visualstudio2017 community版本,有点失去信心了,同样两行代码,外观看不出任何区别,但是一个报错的更多相关文章

  1. vue-cli 3.x版本执行vue ui命令后提示Error: Cannot find module ‘core-js/modules/es7.object.entries’报错的解决方法

    我的方法是:npm install --save core-js(全局安装竟然不行,必须局部) vue-cli新版提供了界面化项目管理的功能,简直一万个赞! 在安装 vue-cli 3.x  版本后, ...

  2. 【干货】YUM安装PHP 7版本后,增加phalcon框架的报错解决

    目录 1.yum安装php 7.x版本,此处部署7.3版本 2.安装phalcon框架 2.1.PHP版本依赖关系 2.2.编译phalcon扩展模块 2.3.增加扩展文件 3.部署phalcon遇到 ...

  3. Laravel:php artisan key:generate三种报错解决方案,修改默认PHP版本(宝塔面板)

    为了兼容N多个网站,服务器上有3个PHP版本5.3/5.6/7.2.宝塔默认为5.3,但是laravel5.7并不支持,所以在创建线上 .env 环境配置文件,初始化应用配置时候报错了. cp .en ...

  4. Windows 7上执行Cake 报错原因是Powershell 版本问题

    在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...

  5. 升级xcode8之后出现报错提示,提示swift版本问题

    最近Xcode升级了,出现了各种蛋疼的错误提示,今天遇到个导入框架出现了提示Swift版本的问题,具体如下: "Use Legacy Swift Language Version" ...

  6. mac版本navicat连接oracle报错ORA-21561

    最近电脑更换成mac,很多软件都和win不一样了,正在慢慢适应,连接oracle原来用的客户端是pl/sql develop,蛋疼的是没有了mac版本, 用了navicat,具体设置如下 1.新建连接 ...

  7. PL-SQL(免安装版本)报错ORA-12154

      今天在帮同事安装PL/SQL时,在登陆的时候出现上述错误,从网上找了好多解决方法,但都没有解决问题.对于免安装版本的PL/SQL在登陆是应该先配置好路径:bin\instantclient_11_ ...

  8. IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错

    某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:re ...

  9. NAnt0.92版本首次在windows 8.1的机子上运行报错的问题解决

    在官网上下载的0.92版本,各方面都配置好之后,用命令行运行,却提示报错,如下: 具体的错误提示文字是这样的: 获取ConfigurationFileLocation异常. System.Securi ...

  10. FineUI中Newtonsoft.Json版本报错解决办法

    1.清空bin下的Newtonsoft.Json.dll 2.使用Nuget安装最新版本的Newtonsoft.Json.dll,安装脚本为 Install-Package Newtonsoft.Js ...

随机推荐

  1. 浅尝 ECDHE 协议流程

    前言 ECDHE 我之前是听都没听过, 但是新业务需要对前后端通信进行加密, 经过大佬推荐才知道有这个东西, 经过几天的学习和踩坑, 才大致明白其流程和使用方式. 过程坎坷, 好在最后还是成功运用到了 ...

  2. 研发效能|DevOps 已死平台工程永存带来的焦虑

    最近某位大神在推特上发了一个帖子,结果引来了国内众多卖课机构.培训机构的狂欢,开始贩卖焦虑,其实「平台工程」也不是什么特别高深莫测的东西.闲得无聊,把这位大神的几个帖子薅了下来,你看过之后就会觉得没啥 ...

  3. java代码整洁之道

    package Day01;import org.junit.Test;import java.text.NumberFormat;import java.util.Scanner;public cl ...

  4. Dockerfile 跨阶段多阶段使用 ARG 命令

    若要想 Dockerfile 的 ARG 命令可以跨多个阶段使用,需要有以下几步: 先在文件最前面使用 ARG 命令定义 然后在每个阶段分别引用 ARG 命令使用 一个示范的 Dockerfile 文 ...

  5. CopyOnWriteArrayList 是如何保证线程安全的?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在上一篇文章里,我们聊到了ArrayList 的线程安全问题,其中提到了 Copy ...

  6. Objects.requireNonNull的意义是什么

    Objects.requireNonNull方法的源码是这样: public static <T> T requireNonNull(T obj) { if (obj == null) t ...

  7. mysql-front连接mysql报错1251解决方法

    客户端不通过服务器的验证,建议升级mysql客户端 出现错误的原因是mysql版本问题,由于mysql8.0版本与mysql5.0版本加密方式不同,导致mysql-front无法通过验证. mysql ...

  8. js-day04-作业

    // -------------------------Day04homework 大练习------------------------ #### 练习题1: * 显示用户输入内容 * 要求: 1. ...

  9. 【基础语法规范】BC1:Hello Nowcoder

    语言1:Java public class Main{ public static void main(String[] args){ System.out.println("Hello N ...

  10. 使用pycharm or vscode来编写python代码?

    pycharm社区版可用于商业项目 pycharm社区版可用于商业项目,来源于官方的回答:Can I use Community Editions of JetBrains IDEs for deve ...