相关疑难解决方法(0)

您是否使用TR 24731'安全'功能?

ISO C委员会(ISO/IEC JTC1/SC21/WG14)已发布TR 24731-1,正在研究TR 24731-2:

TR 24731-1:C库的扩展第一部分:边界检查接口

WG14正在研究更安全的C库函数.该TR旨在通过添加具有缓冲区长度的额外参数来修改现有程序.最新草案见N1225号文件.理由是在N1173号文件中.这将成为技术报告类型2.

TR 24731-2:C库的扩展 - 第二部分:动态分配功能

WG14正在研究更安全的C库函数.该TR面向使用动态分配而不是缓冲区长度的额外参数的新程序.最新草案见N1337号文件.这将成为技术报告类型2.

问题

  • 您是否使用支持TR24731-1功能的库或编译器?
  • 如果是这样,哪个编译器或库以及哪个平台?
  • 您是否因修复代码以使用这些功能而发现任何错误?
  • 哪些功能提供最大价值?
  • 有没有提供任何价值或负值?
  • 你打算将来使用这个图书馆吗?
  • 您是否正在跟踪TR24731-2的工作?

c security coding-style tr24731

71
推荐指数
5
解决办法
1万
查看次数

为什么 scanf_s 不能在 Visual Studio 以外的任何地方工作?

当我使用 Visual Studio 时,它说“scanf 不安全,尝试使用 scanf_s”。但如果我在 gcc 或其他编译器中使用 scanf_s ,它就不起作用。scanf_s 仅适用于 Visual Studio 吗?如果是这样,为什么?Visual Studio 网站显示“scanf 不安全”。如果它不安全,为什么其他人仍然使用它?

c gcc visual-studio

3
推荐指数
1
解决办法
1819
查看次数

Scanf_s保持返回\ 0而不是输入

在我看来,我已经陷入了一个非常简单的任务.我编写了一个程序,可以选择一个随机数,并让你猜出它是哪一个,并在输入字符"n"或"N"时退出程序.代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int input_switcher(int input, int answer)
{
    if (input == answer)    {return 1;} 
    else if(input < answer) {return 2;}
    else if(input > answer) {return 3;}
    else                    {return 0;}
}

int main(void)
{
    int input, answer, tries;
    char keepGoing = 'J';
    srand((int)time(0));

    while(42)
    {
        input = 0, tries = 0;
        answer = 1;//rand()%100+1;

        printf("Jag \"t\x84nker\" p\x86 ett tal mellan 1 och 100, gissa vilket!\n");

            while(42)
            {
                printf("Gissning: ");
                scanf_s("%d", &input);

                switch (input_switcher(input, answer))
                {
                case …
Run Code Online (Sandbox Code Playgroud)

c scanf

2
推荐指数
1
解决办法
310
查看次数

标签 统计

c ×3

coding-style ×1

gcc ×1

scanf ×1

security ×1

tr24731 ×1

visual-studio ×1