IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> fatal error: cstdio: 没有那个文件或目录 -> 正文阅读

[C++知识库]fatal error: cstdio: 没有那个文件或目录

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

今天在看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.

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:19:22  更:2021-08-01 14:21:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 15:47:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码