# 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个字符空间为何不保留原字符数组中的内容呢?求大侠指教
C语言gets函数会覆盖原内容吗
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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]);解决 5无用
悬赏问题
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?
- ¥15 matlab(相关搜索:紧聚焦)
- ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
- ¥15 Arduino无法同时连接多个hx711模块,如何解决?
- ¥50 需求一个up主付费课程
- ¥20 模型在y分布之外的数据上预测能力不好如何解决