关于gets和gets_s的使用问题
如果我用C11标准,使用gets_s,编译器会提示C99不支持gets_s,但我cmake文件中明明设置的是C11标准。如果我直接使用gets,可以编译通过,但是运行的时候会提示错误,然后结束程序,应该怎么解决呢?
本帖最后由 临时号 于 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 == 'n')
str = ' ';
return str;
}
return 0;
} 临时号 发表于 2022-8-22 10:33
目前GCC中还没有完全实现此标准, 因此 gets_s() 函数尚未包含在目前的GNU 工具链中。Clang里也暂时没有增 ...
{:10_285:}那这不是死循环了吗,get不让用,gets_s不支持{:10_266:},除了自己手动实现或者fget替代还有其他解决方案吗 御笔剑客 发表于 2022-8-22 12:04
那这不是死循环了吗,get不让用,gets_s不支持,除了自己手动实现或者fget替代还有 ...
要不你改回c99 御笔剑客 发表于 2022-8-22 12:04
那这不是死循环了吗,get不让用,gets_s不支持,除了自己手动实现或者fget替代还有 ...
或者用Visual Studio,我看了一下,Visual Studio支持gets_s 临时号 发表于 2022-8-22 12:06
要不你改回c99
好吧{:10_266:}
页:
[1]