今天在linux中使用个g++编译一个名为myfirst.cpp的代码的时候,出现如下错误

myfirst.cpp: In function ‘int main()’:
myfirst.cpp:11:2: warning: ‘char* gets(char*)’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
gets(cc);
^
myfirst.cpp:11:9: warning: ‘char* gets(char*)’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
gets(cc);
^
/tmp/ccoHyVHf.o: In function `main':
myfirst.cpp:(.text+0xad): warning: the `gets' function is dangerous and should not be used.
/tmp/ccoHyVHf.o: In function `__static_initialization_and_destruction_0(int, int)':
myfirst.cpp:(.text+0x103): undefined reference to `std::ios_base::Init::Init()'
myfirst.cpp:(.text+0x112): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

仔细看错误信息得知,gets函数是危险的,具体信息请百度或者google,但是我用gets函数目的仅仅是为了输入一串字符,系统的用不了,我就自己写一个

ps:以下操作都实在linux的终端中进行,系统版本为ubuntu 14.04 LTS

打开终端(ctrl+Alt+T)

touch cstdio//创建文件cstdio,我使用的是C++

vim cstdio//编辑cstdio,并添加以下内容

int myown_gets(char *str)
{
int i=;
char c;
while(scanf("%c",&c)&&(c=='\0'||c=='\n'));//这儿是用来吸收在myown_gets之前的残留在输入流中的回车用的
str[i++]=c;
while(scanf("%c",&c)&&(c!='\0'&&c!='\n'))
{
str[i++]=c;
c=;
}
str[i]=;
return i;
}

这样自己的库函数就写好了,我不知道标准的库函数具体什么样,但是肯定不是我这样,嘿嘿

使用的时候,在头文件位置加上

#include"cstdio"  //是双引号,而不是尖括号

mygets(str);  //str书字符数组名

就可以在linux下间接使用gets函数了

若是使用C语言的写法的话,将

cstdio 文件的文件名

改为

stdio.h,将该文件的里面的

#include<cstdio>

改为

#include<stdio.h>

本文首发地址

https://www.textarea.com/suppermary/linux-xia-shiyong-gcc-g-bianyi-daima-shi-gets-hanshu-you-cuowu-564/

linux下使用gcc/g++编译代码时gets函数有错误的更多相关文章

  1. [转]Linux下用gcc/g++生成静态库和动态库(Z)

    Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅     ...

  2. Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境

    0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...

  3. linux下cp覆盖原so文件时引起的段错误原因确定

    原创作品,转载请注明出处http://www.cnblogs.com/leo0000/p/5694416.html 最近因为一个很有意思的段错误学习了一些新的东西. 当时现象是这样的,程序正在运行,系 ...

  4. [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件

    在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么 ...

  5. SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码)

    SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码) 摘自: https://blog.csdn.net/sjin_1314/article/det ...

  6. Linux下用GCC

    Linux下用GCC 前言 离职前对做过的支付系统进行了一番#总结,继续完善我的C服务器. 本想着接下来大概实现一下 CGI 协议,但是实现过程中被一个问题卡住了: C进程与php进程的交互数据类型问 ...

  7. Linux下librdkafka客户端的编译运行

    Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

  8. 学习总结:gcc/g++ 编译与链接

    gcc/g++ 编译与链接 编译与链接的过程可以分解为四个步骤:预处理.编译.汇编.链接 预处理:源代码文件和相关的头文件,被预处理器cpp预处理成一个后缀为 .i 的文件(选项:-E) 编译:把预处 ...

  9. SSL握手通信详解及linux下c/c++ SSL Socket代码举例

    SSL握手通信详解及linux下c/c++ SSL Socket代码举例 摘自:http://www.169it.com/article/3215130236.html   分享到:8     发布时 ...

随机推荐

  1. 收集的java面试题

    1.谈谈final, finally, finalize的区别. final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 ...

  2. 四 Android Capabilities讲解

    本文转自:http://www.cnblogs.com/sundalian/p/5629429.html Android Capabilities讲解   1.Capabilities介绍 可以看下之 ...

  3. python-压缩解压

    压缩解压包 #导入模块 import zipfile #新建压缩包并将db与ooo.xml压缩到文件中 z = zipfile.ZipFile('laxi.zip','w') z.write('db' ...

  4. HDU 4057 Rescue the Rabbit ( AC自动机 + 状态压缩DP )

    模板来自notonlysuccess. 模式串只有10个,并且重复出现的分值不累加,因此很容易想到状态压缩. 将模式串加入AC自动机,最多有10*100个状态. dp[i][j][k]:串长为i,在T ...

  5. nodejs & docker

    nodejs & docker https://github.com/xgqfrms-GitHub/Node.js/blob/master/Docker-Nodejs/translation. ...

  6. 浅析_tmain() 与 main() 函数的区别

    _tmain()是为了支持Unicode所使用的main的一个别名,既然是别名,应该有宏定义过的,在<stdafx.h>里 #include <stdio.h> #indlud ...

  7. C++11 tuple元组

    C++11 tuple 元组 tuple容器(元组), 是表示元组容器, 是不包含任何结构的,快速而低质(粗制滥造, quick and dirty)的, 可以用于函数返回多个返回值; tuple容器 ...

  8. POJ 1236 Networks of School Tarjan 基础

    题目大意: 给一个有向图,一个文件可以从某个点出发传递向他能连的边 现在有两个问题 1.至少需要多少个放文件可以让整个图都有文件 2.可以进行一个操作:给一对点(u,v)连一条u->v的有向边, ...

  9. SecureCRT指南

    本文主要介绍SecureCRT的使用方法和技巧. [概念解释]什么是SSH? SSH的英文全称是Secure Shell 传统的网络服务程序,如:FTP和telnet在本质上都是不安全的, 因为它们在 ...

  10. Bzoj3093 [Fdu校赛2012] A Famous Game

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 251  Solved: 136 Description Mr. B and Mr. M like to ...