没什么基础要自学真是挺多坑,不过填了一个坑就多一份经验。

今天在看pwn中关于GOT表的内容,其中需要编译一个程序,代码如下:

#include <cstdio>
#include <cstring>using namespace std;void win(){printf("you win\n");
}int main(){char a[100];gets(a);printf("you lose\n");return 0;
}

原作者可能 没想到自己的文章受众基础太差,所以并没多作说明。于我保存为t1.c, 执行gcc t1.c进行编译,如果报错如是题所示:

t1.c:1:10: fatal error: cstdio: 没有那个文件或目录
 #include <cstdio>
          ^~~~~~~~
compilation terminated.

搜索了一下,基本上都是说未安装lib6-dev,或者此库文件损坏,按此思路操作一番,并没有解决问题。后来在一个国外网站得到一个信息,cstdio 是一个C++ 库,应该要将t1.c 改为 t1.cpp 再进行编译。想不到,gcc编译器是以后缀名来区别对待进行编译的。再次执行gcc t1.cpp,这次报另外的错误了:

t1.cpp: In function ‘int main()’:
t1.cpp:12:2: error: ‘gets’ was not declared in this scope
  gets(a);
  ^~~~
t1.cpp:12:2: note: suggested alternative: ‘fgets’
  gets(a);
  ^~~~
  fgets

继续搜索,得到比较多的信息是C++不再支持gets函数了,因为它不安全。那不能啊,我现在就是要用它来做例子,怎么办。继续搜索,这次在stackoverflow.com上得到有用信息:As gets() is a C style function, so if you need to include it in your c++ code then you need to include the header file called stdio.h,看来要换回C来编写

#include <string.h>
#include "stdio.h"void win(){printf("you win\n");
}int main(){char a[100];gets(a);printf("you lose\n");return 0;
}

保存为t1.c, 执行gcc t1.c,这次是警告,说明gets函数不安全,但是正常生成可执行文件了。

t1.c: In function ‘main’:
t1.c:13:2: warning: implicit declaration of function ‘gets’; did you mean ‘fgets’? [-Wimplicit-function-declaration]
  gets(a);
  ^~~~
  fgets
/tmp/cc4tcTYq.o:在函数‘main’中:
t1.c:(.text+0x37): 警告: the `gets' function is dangerous and should not be used.

fatal error: cstdio: 没有那个文件或目录相关推荐

  1. ubuntu(21):fatal error: filesystem: No such file or directory,fatal error: filesystem: 没有那个文件或目录

    1 报错: fatal error: filesystem: 没有那个文件或目录 /home/meng/subject/LT_mapper_ws/src/lt-mapper/ltslam/includ ...

  2. VS中添加lib文件,编译出错:LINK : fatal error LNK1104: 无法打开文件:×××.lib解决办法

    添加库文件: 在VS中右击项目点属性: 添加头文件目录:   配置属性-->C/C++-->常规-->附加包含目录 加上头文件存放的目录.   添加lib文件:   配置属性--&g ...

  3. fatal error LNK1104: 无法打开文件“***.lib“ 解决方法

    前言 我们在做一个工程时,工程内可能包括几个项目,每个项目负责一个子功能,最后在主项目中调用:很多时候这些项目都是以DLL的方式生成,那么我们在主项目调用DLL时,需要配置项目选项,如果配置不当,就会 ...

  4. fatal error LNK1104: 无法打开文件“opencv_calib3dXXXX.lib”

    opencv 配置错误: fatal error LNK1104: 无法打开文件"opencv_calib3d2410.lib" 查看一下 opencv D:\Prpgram Fi ...

  5. LINK : fatal error LNK1104: 无法打开文件“opencv_world400d.lib”---VS2017+OpenCV配置过程

    目录 问题1.关于LINK : fatal error LNK1104: 无法打开文件"opencv_world400d.lib"问题解决 问题2.调试opencv程序时总是提示: ...

  6. 64位Ubuntu提示(...adb": error=2, 没有那个文件或目录)

    Failed to get the adb version: Cannot run program "/home/jayhomzhou/Android/android-sdk/platfor ...

  7. LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”的原因又一例

    LINK : fatal error LNK1104: 无法打开文件"mfc71.lib"的原因一例 http://blog.csdn.net/mxclxp/article/det ...

  8. LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”的原因一例

    LINK : fatal error LNK1104: 无法打开文件"mfc71.lib"的原因一例 [环境]   日文Windows XP OS   中文Visual Studi ...

  9. 编译问题解决:LINK : fatal error LNK1104: 无法打开文件“*.dll”

    一.引言 编译项目的时候,总会遇到些奇怪的问题,比如说以下这种: LINK : fatal error LNK1104: 无法打开文件"..\bin\utilitiesd.dll" ...

最新文章

  1. MVC页面加载速度优化小记
  2. 按功能顺序列出的 HTML 4.01/XHTML 1.0
  3. 我国计算机体系结构相关产业,中国工程院院士吴汉明:发展我国半导体产业,力求颠覆传统计算机体系结构...
  4. Titanic: Machine Learning from Disaster-kaggle入门赛-学习笔记
  5. django不修改数据库创外键_Django——model(建表,增删改查,外键,多对多)
  6. php的静态变量static在函数内部
  7. python读取txt文件_python实现读写txt文件的几种方法
  8. sqlserver 分组合并列_哪个“三人组”是历史最强组合?数据显示最均衡组合令人意外...
  9. 插件显示缩进_硬核,这 3 款 IDE 插件让你的代码牢不可破
  10. 盘口的买一是卖股票还是买股票?
  11. python uwsgi_uwsgi的多站点配置
  12. 三维模型_浅谈倾斜摄影及三维模型的应用行业
  13. matlab 关闭mdl,双击m文件和mdl文件重新打开一个matlab主程序
  14. Android中TextView中文字体粗体的设置方法
  15. 初中计算机课件flash,初中数学flash课件(共100个)
  16. C++/Qt获取屏幕尺寸和放大比例
  17. 扇入Fan-in和扇出Fan-out
  18. Excel学习日记:L20-excel的12个小技巧
  19. 使用jersey框架上传图片到图片服务器
  20. Spring 的自动装配

热门文章

  1. 致80后、90后的扎心图鉴
  2. 一种面向多无人机系统的地图构建与共享框架
  3. python生成带超链接的excel表格
  4. 神奇的电子计算机教学设计,全国“xx杯”计算机类教师说课大赛一等奖作品:《神奇的Vlookup函数》教学设计.docx...
  5. 向量的点乘和叉乘区别及几何意义
  6. LCD的接口类型详解
  7. 这个看起来有点简单!-实验吧
  8. firewalld标准规则
  9. 设置系统时间重启时间置回版本时间分析
  10. Unity基础01——3D数学