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

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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)