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) 编辑 收藏 举报