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

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 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决