今天在LINUX下编译C程序时,出现了:
warning: the `gets' function is dangerous and should not be used.

这个warning。

百度之后,得知

问题出在程序中使用了 gets  ,Linux 下gcc编译器不支持这个函数,解决办法是使用 fgets

 fgets()函数的基本用法为:

 fgets(char * s,int size,FILE * stream);//eg:可以用fgets(tempstr,10,stdin)//tempstr 为char[]变量,10为要输入的字符串长度,stdin为从标准终端输入。
 /*   代码实现     */

 #include <stdio.h>
int main ( ) { char name[]; printf("\n 输入任意字符 : "); fgets(name, , stdin);//stdin 意思是键盘输入 fputs(name, stdout); //stdout 输出 return ;
}

根据以上改动后,果然没有了warning,但是调试了n久的一个程序,确实怎么也没有正确结果,最后step跟踪,才发现了问题所在!那就是:
gets从终端读入是的字符串是用\0结束的,而fgets是以\n结束的(一般输入都用ENTER结束),然后strcmp两者的时候是不会相等的!

所以建议大家还是继续让它warning吧。。为了正确性!

这个问题主要应该是因为linux 和 windows的文件在换行符上编码不一样导致的,linux的换行是\0,windows的换行是\13\0,是两个字符。

但是的文件应该是在windows下编译的,所以导致会出现两字符不匹配。建议可以在linux终端下,利用dos2unix filename,来将换行符处理一下,应该就OK了

参考:

http://hi.baidu.com/zojoyo/blog/item/134874c89b9b94107f3e6fc3.html

http://hi.baidu.com/laoniaoyiren/blog/item/95a0862b291c5124d42af1cd.html/cmtid/e89b2c1fd0c330fb1ad57625

warning: the `gets' function is dangerous and should not be used.(转)的更多相关文章

  1. linux系统下,警告:warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration] 和 warning: the `gets' function is dangerous and should not be used. 的由来和解决方法。

    字符数组 的英文名字是 char [] gets()函数的基本用法为:char *gets(char *s); 该函数的参数是一个字符数组,该函数的返回值也是一个字符数组. linux下的代码如下: ...

  2. warning: Unexpected unnamed function (func-names)

    warning: Unexpected unnamed function (func-names) 看到这个提示基本是就是说你的函数不能是匿名函数,最好可以起一个名字,然后你增加一个函数名称就好了 R ...

  3. c语言中遇到“警告: the `gets' function is dangerous and should not be used.”的解决办法

    写于2016年12月1日. 在用c的库函数gets(str)时,编译出现该提示.原因在于linux下gcc不支持gets命令,要换成fgets(arr,size,stdin).

  4. GCC,GDB,Makefile和IO复用函数

    2015.1.22 c高级的环境搭建:GCC编译器:全称 GNU CC,是GNU工具(tool chain)的一种,源码编译成机器码,gcc的编译依赖于很多小工具4.3.3和3.4.3版本的比较稳定 ...

  5. Linux C 程序 字符串函数(12)

    字符串函数C语言的字符串处理函数1.puts函数 //把一个以'\0'结尾的字符串输出到屏幕 char a[] = "Welcome to"; char *p = "Li ...

  6. -lrt

    在编写pthread有关的程序时,编译时老是报"undefined reference to `pthread_create'"的错误,原因是没有链接pthread相关的库,gcc ...

  7. C app

    1,C 输入输出字符串

  8. c语言基础学习06

    =============================================================================涉及到的知识点有:1.C语言库函数.字符输入函 ...

  9. GlusterFS学习

    环境准备 3台机器,每个机器双网卡,每个机器还需要额外添加1个10GB的磁盘用于测试 机器系统版本是centos6.6 [root@gluster-1-1 ~]# uname -rm 2.6.32-5 ...

随机推荐

  1. MAC安装SVNServer

    MAC已经自带了SVN,所以,直接使用就好 1.创建svn repository svnadmin create /path/svn/pro  //仓库位置,svn是svn的目录,pro是一个版本库的 ...

  2. Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别

    在Java中,字符串可以直接赋值或者使用new来新建,直接赋值的话是编译阶段(.class文件)中就将该字符串值放到常量池中,以后如果有其他变量直接赋予同样的值的话就不再分配内存空间,而是直接给它个引 ...

  3. Ajax原生XHR对象

    前端学了有一段时间了,在项目中我通常使用的都是jQuery封装好的Ajax函数($.ajax.$.get.$.post),使用非常的简单方便,但为了更清楚的了解Ajax,需要学习原生xhr对象.   ...

  4. jquery向下取整

    var currentMoney =Math.round((_memberCurrentPoints/_pointVsMoney)*Math.pow(10,2))/Math.pow(10,2) * 2 ...

  5. Tabs( 选项卡)

    一. 加载方式 //class 加载方式<div id="box" class="easyui-tabs" style="width:500px ...

  6. 小学生之KTV项目文档(bdqn)

    第一步:创建数据库连接方法和打开方法和关闭方法! 1 public class DBHelper 2 { 3 private string str = "server=.;database= ...

  7. hdu 1301

    最小生成树模板题 简单的prim算法 AC代码: #include <iostream> #include <stdio.h> #define INF 9999999 usin ...

  8. python自动化执行脚本

    ---恢复内容开始--- 1 (1)首先在你的.py文件上加上一行代码注释: #!/usr/local/bin/python2.7 (2)终端下执行: crontab -e 进入后,输入i 进入可编辑 ...

  9. 关于html页面图片自动撑开的问题

    如下列代码: <div id="divnr" style="text-align: center; margin: 10px; width:600px;" ...

  10. 函数malloc的实现源代码

    /****************************************************************Copyright 1990, 1994, 2000 by AT&am ...