morant 9 2022-12-23 21:03 采纳率: 100%
浏览 29
已结题

为什么我的gtes不能用 下面是什么意思

gets不能用

#include<stdio.h>
#include<string.h>
int main()
{
    int i=0;
   char a[31];
   gets(a);
    while(a[i]!='#')
    {
        if(a[i]>='A'&&a[i]<='Z')
            a[i]=a[i]-'A'+'a';
        else  if(a[i]>='a'&&a[i]<='z')
          a[i]=a[i]-'a'+'A';
           i++;
    }
    for(i=0;a[i]!='#';i++)
    {
        printf("%c",a[i]);
    }
    return 0;
}
a.c: In function ‘main’:
a.c:7:4: warning: ‘gets’ is deprecated [-Wdeprecated-declarations]
    gets(a);
    ^~~~
In file included from /usr/include/stdio.h:862:0,
                 from a.c:1:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:232:1: note: declared here
 gets (char *__str)
 ^~~~
a.c:7:4: warning: ignoring return value of ‘gets’, declared with attribute warn_unused_result [-Wunused-result]
    gets(a);
    ^~~~~~~
/tmp/cc3oWUvp.o: In function `main':
a.c:(.text.startup+0x22): warning: the `gets' function is dangerous and should not be used.
  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-12-23 21:45
    关注

    gets_s函数对应头文件<stdio.h>
    原型:char *gets_s(char *buffer,size_t sizeInCharacters);
    调用形式:gets_s(buffer,sizeInCharacters) ;
    在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets()函数,使用一个新的更安全的函数gets_s()替代。

    //摘自百度百科
    #include <stdio.h>//gets_s()用法
    #define CH 20
    int main(void)
    {
        char ch[CH];
        printf("请输入你的名字:\n");
        gets_s(ch,CH); //这里不能用gets_s(ch);
        printf("这是你的名字:%s\n", ch);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 请采纳用户回复 12月25日
  • 创建了问题 12月23日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?