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

include<stdio.h>
main()
{
chara[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);
}
若输入Fig flower is red.程序运行结果为:
Fig flower is red.
Fig flower is red.
====C语言gets函数会覆盖原内容吗?原b[]="The sky is blue.";中有16个字符,gets(b)---输入了“ is red.”8个字符,剩下8个字符空间为何不保留原字符数组中的内容呢?求大侠指教

gets()函数会读入字符串数据,并在后面加'\0'。gets(b)执行之后b[]里面就是:" is red.\0s blue.\0"
众所周知,'\0'是字符串结束标志,printf 的时候到'\0'就结束字符串输出了,所以输出的就是" is red."而不是所有的内容。

如果你加上b[8] = '-';
结果就是:
Fig flower is red.
Fig flower is red.-s blue.
说明内容只是覆盖了前面的一部分,懂?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-10
是的,会覆盖原来的内容,之前的内容将不复存在
gets会从你传入的地址出开始保存数据,比如get(b+3)则b数组的前三个字符会被保留。
第2个回答  2015-09-10
原b[]="The sky is blue."

新b[]=" is red.\0s blue."
输出字符串会到\0截止

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网