【发布时间】:2015-09-28 17:35:24
【问题描述】:
while(1)
{
printf("\nEnter message : ");
gets(message);
//Send some data
if( send(sock , message , strlen(message) , 0) < 0)
{
puts("Send failed");
return 1;
}
//Receive a reply from the server
if( recv(sock , server_reply , 2000 , 0) < 0)
{
puts("recv failed");
break;
}
puts("Server reply :");
puts(server_reply);
}
close(sock);
return 0;
}
这是我的计划的一部分。当我编译并运行它时,我得到一个错误。错误消息是
警告:gets 函数很危险,不应使用!
【问题讨论】:
-
编译器警告和编译器错误 - 都是不同的。可能是相关的,是的,但是,非常不同。
-
是的,
gets已贬值,现在在引入 c11.gets_s作为更安全的替代方案后将其删除。 -
使用像
fgets(array, sizeof(arr), stdin)或scanf("%[^\n]%*c", arr)这样的fget 记得在fgets的情况下砍掉\n -
@ARBY 请注意,gets_s() 只是出于向后兼容的原因,标准本身建议使用 fgets()。