鱼C论坛

 找回密码
 立即注册
查看: 1981|回复: 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函数
#include <stdio.h>
#include <string.h>
char *gets_s(char *str, int num)
{
    if (fgets(str,num, stdin) != 0)
    {
        size_t len = strlen(str);

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

            str[len-1] = ' ';
        return str;
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

            str[len-1] = ' ';
        return str;
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那这不是死循环了吗,get不让用,gets_s不支持,除了自己手动实现或者fget替代还有其他解决方案吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

要不你改回c99
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

或者用Visual Studio,我看了一下,Visual Studio支持gets_s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 23:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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