今天刚刚学习字符串数组,运行过程中发现数组的长度会影响输出的结果
在长度为16及以下时候,一切正常
#include <stdio.h>
#include <string.h>
int main()
{
char s[16],l[16];
gets(s);
puts(s);
strncpy(l,s,3);
strcat(l,s);
puts(l);
}
长度改为17及以上以后,问题出现了,strncpy函数的结果很奇怪
#include <stdio.h>
#include <string.h>
int main()
{
char s[17],l[17];
gets(s);
puts(s);
strncpy(l,s,3);
strcat(l,s);
puts(l);
}
求教
1.是什么导致了以16为节点的这种不同?
2.当数组长度到17及以上时候,在strncpy的结果中
出现了一个'-'符号,是怎么回事?
小弟在此谢过了!
先把数组清空了试试,memset等,然后再strncpy
strcat 返回到减号。。。
这个跟长度没有关系,具体是编译环境的问题dev c++内部编译环境有时不稳定,才会出现这种情况。数组的长度是在初始化的时候定义的,是多少多可以,如果实际输入的比定义的长度大,那就只储存长度大小的字符。所以,并没有16,17的关系