博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
warning: the `gets' function is dangerous and should not be used.(转)
阅读量:4979 次
发布时间:2019-06-12

本文共 919 字,大约阅读时间需要 3 分钟。

今天在LINUX下编译C程序时,出现了:

warning: the `gets' function is dangerous and should not be used.

这个warning。

百度之后,得知

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

1 fgets()函数的基本用法为:2 3 fgets(char * s,int size,FILE * stream);//eg:可以用fgets(tempstr,10,stdin)//tempstr 为char[]变量,10为要输入的字符串长度,stdin为从标准终端输入。

 

1 /*   代码实现     */ 2  3 #include 
4 int main ( ) { 5 6 char name[20]; 7 8 printf("\n 输入任意字符 : "); 9 10 fgets(name, 20, stdin);//stdin 意思是键盘输入11 12 fputs(name, stdout); //stdout 输出13 14 return 0;15 }

根据以上改动后,果然没有了warning,但是调试了n久的一个程序,确实怎么也没有正确结果,最后step跟踪,才发现了问题所在!那就是:

gets从终端读入是的字符串是用\0结束的,而fgets是以\n结束的(一般输入都用ENTER结束),然后strcmp两者的时候是不会相等的!
所以建议大家还是继续让它warning吧。。为了正确性!

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

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

 

参考:

转载于:https://www.cnblogs.com/jikexianfeng/p/6267599.html

你可能感兴趣的文章
内网机连外网教程
查看>>
前阿里运营的电商运营总结
查看>>
A计划
查看>>
CUDA学习5 常量内存与纹理内存
查看>>
控制反转-依赖注入
查看>>
做热风焊盘时老是提示错误: ERROR - Could Not Generate Shape
查看>>
(水题)洛谷 - P1149 - 火柴棒等式
查看>>
Codeforces - 346A - Alice and Bob - 简单数论
查看>>
模板 - 图论 - 单源最短路
查看>>
Java http请求和调用
查看>>
基于 Token 的身份验证
查看>>
Moment.js
查看>>
转----秒杀多线程第十篇 生产者消费者问题
查看>>
Linux 命令 - ln
查看>>
UNP Chapter 12 - 守护进程和inetd超级服务器
查看>>
数据库变成可疑状态
查看>>
codeforces B. Valera and Contest 解题报告
查看>>
JavaScript—赋值表达式
查看>>
笔记本Ctrl键突然失灵是什么原因?
查看>>
mongodb 安装(官方说明链接)
查看>>