coco1312 2015-09-10 03:16 采纳率: 0%
浏览 3741

C语言gets函数会覆盖原内容吗

# include
main()

{
char a[20],b[]="The sky is blue.";int i;
for(i=0;i<10;i++) scanf("%c",&a[i]);
a[i]=0;
gets(b);
printf("%s%s\n",a,b);
}
/*
1.程序运行结果为:
Fig flower is red.
Fig flower is red.
*/
====C语言gets函数会覆盖原内容吗?原b[]="The sky is blue.";中有16个字符,gets(b)---输入了“ is red.”8个字符,剩下8个字符空间为何不保留原字符数组中的内容呢?求大侠指教

  • 写回答

4条回答 默认 最新

  • liuhulh001 2015-09-10 04:21
    关注

    你在printf改为printf("%s,%s,%d\n",a,b,sizeof(b));这个区测试就会看到 b[]的大小是17(包括结束符)。gets函数是从读入一行字符(换行结束)的函数。gets(b)
    的时候把b数组中的前面的字符给覆盖掉了,并在后面自动加了一个结束符,所以输出的结果是这样的。
    gets(b)以前 的存储数据是:The sky is blue.结束符
    gets(b)后 的存储数据是: is red.结束符 is blue.结束符

    你可以在用for输出整个b数组的字符如:
    for(i=0;i<16;i++)
    printf("%c\n",b[i]);

    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试