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

不多废话,先上代码

注意查看函数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下面点亮了,但是偶尔几次不亮,这就很违背物理常识了。

 

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

 

posted on 2022-06-04 13:03  AnonymousJDK  阅读(60)  评论(0编辑  收藏  举报

导航