m0_73674542 2023-02-13 19:29 采纳率: 67.7%
浏览 34
已结题

gets的指针用法,通过分配空间来输入字符

gets的指针用法,通过分配空间来输入字符,哪里错了?


```c
#include<stdio.h>
int main()
{
    char* p = (char*)malloc(20 * sizeof(char));
    gets(p);
    puts(p);
    return 0;
}

```

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-13 19:46
    关注

    使用 gets 函数在 C 语言中是不安全的,因为它不会对输入的字符串进行边界检查,容易造成缓冲区溢出攻击。
    要安全地读取字符串,可以使用 fgets 函数,它可以指定读取的字符数量,以避免缓冲区溢出。

    #include<stdio.h>
    int main()
    {
        char p[20];
        fgets(p, 20, stdin);
        puts(p);
        return 0;
    }
    
    
    

    回答若有帮助,请你采纳哈!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 2月13日