为了账号安全,请及时绑定邮箱和手机立即绑定

在C语言中使用gets(buf);有警告是怎么回事?

在C语言中使用gets(buf);有警告是怎么回事?

qq_莫非 2017-09-22 12:57:14
 warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration]         gets(buf);//获取用户输入的字符串,存放到buf中         ^/tmp/ccnxjoDy.o:在函数‘main’中:tcpclient.c:(.text+0x149): 警告: the `gets' function is dangerous and should not be used.#include <stdio.h> #include <unistd.h> #include <strings.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdlib.h> #include <string.h> #define PORT 1234 #define MAXDATASIZE 100 int main(int argc,char *argv[]) {     //定义变量     int sockfd,num,numw;     char buf[MAXDATASIZE];     struct hostent *he;     struct sockaddr_in server;     if(argc!=2)     {         printf("Usage:%s<IP Address>\n",argv[0]);         exit(1);     }          //域名解析     if((he=gethostbyname(argv[1]))==NULL)     {         printf("gethostbyname() error\n");         exit(1);         }     //创建套接字     if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)     {         printf("socket() error\n");         exit(1);         }     //初始化     bzero(&server,sizeof(server));     server.sin_family=AF_INET;     server.sin_port=htons(PORT);     server.sin_addr=*((struct in_addr *)he->h_addr);     //建立与服务器的连接     if(connect(sockfd,(struct sockaddr *)&server,sizeof(server))==-1)     {         printf("connect() error\n");         exit(1);     }     while(1){         printf("Please enter a string:\n");         gets(buf);//获取用户输入的字符串,存放到buf中         if((numw=write(sockfd,buf,MAXDATASIZE))==-1){//将buf中的数据发送给服务器             printf("write error.\n");             exit(1);         }         if((num=recv(sockfd,buf,MAXDATASIZE,0))==-1)//接收从服务器发回来的已经反转的字符串         {             printf("recv() error\n");             exit(1);         }         if(!strcmp(buf,"tuiq"))             break;         buf[num-1]='\0';         printf("The reverse message:\n%s\n",buf);     }     close(sockfd);//关闭套接字 }
查看完整描述

1 回答

已采纳
?
_夕晨踏雪

TA贡献40条经验 获得超16个赞

因为gets函数可以无限读取,除非遇到换行或者文件结束,缓存很容易溢出,因此是不安全的

查看完整回答
2 反对 回复 2017-09-22
  • 1 回答
  • 1 关注
  • 3800 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信