鱼C论坛

 找回密码
 立即注册
查看: 2306|回复: 5

[已解决]关于gets和gets_s的使用问题

[复制链接]
发表于 2022-8-22 09:41:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果我用C11标准,使用gets_s,编译器会提示C99不支持gets_s,但我cmake文件中明明设置的是C11标准。
如果我直接使用gets,可以编译通过,但是运行的时候会提示错误,然后结束程序,应该怎么解决呢?
WechatIMG192153.png WechatIMG192151.png
最佳答案
2022-8-22 10:33:56
本帖最后由 临时号 于 2022-8-22 11:50 编辑

目前GCC中还没有完全实现此标准, 因此 gets_s() 函数尚未包含在目前的GNU 工具链中。Clang里也暂时没有增加对 gets_s 的支持。
你可以自行实现gets_s函数
  1. #include <stdio.h>
  2. #include <string.h>
  3. char *gets_s(char *str, int num)
  4. {
  5.     if (fgets(str,num, stdin) != 0)
  6.     {
  7.         size_t len = strlen(str);

  8.         if (len > 0 && str[len-1] == 'n')

  9.             str[len-1] = ' ';
  10.         return str;
  11.     }
  12.     return 0;
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-22 10:33:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 临时号 于 2022-8-22 11:50 编辑

目前GCC中还没有完全实现此标准, 因此 gets_s() 函数尚未包含在目前的GNU 工具链中。Clang里也暂时没有增加对 gets_s 的支持。
你可以自行实现gets_s函数
  1. #include <stdio.h>
  2. #include <string.h>
  3. char *gets_s(char *str, int num)
  4. {
  5.     if (fgets(str,num, stdin) != 0)
  6.     {
  7.         size_t len = strlen(str);

  8.         if (len > 0 && str[len-1] == 'n')

  9.             str[len-1] = ' ';
  10.         return str;
  11.     }
  12.     return 0;
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-22 12:04:34 | 显示全部楼层
临时号 发表于 2022-8-22 10:33
目前GCC中还没有完全实现此标准, 因此 gets_s() 函数尚未包含在目前的GNU 工具链中。Clang里也暂时没有增 ...

那这不是死循环了吗,get不让用,gets_s不支持,除了自己手动实现或者fget替代还有其他解决方案吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-22 12:06:57 | 显示全部楼层
御笔剑客 发表于 2022-8-22 12:04
那这不是死循环了吗,get不让用,gets_s不支持,除了自己手动实现或者fget替代还有 ...

要不你改回c99
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-22 12:08:03 | 显示全部楼层
御笔剑客 发表于 2022-8-22 12:04
那这不是死循环了吗,get不让用,gets_s不支持,除了自己手动实现或者fget替代还有 ...

或者用Visual Studio,我看了一下,Visual Studio支持gets_s
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-22 12:33:07 | 显示全部楼层

好吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 22:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表