字符串函数strncpy有个问题

#include
#include
#include
intmain()
{
chara[3][7];
chartemp[40];
inti=0;
while(i<3&&gets(temp)){
if(temp[0]!='q'){
printf("%sdoesn'tbeginwithq",temp);
}
else{
strncpy(a[i],temp,6);
a[i][6]='\0';
i++;
}
}
for(i=0;i<3;i++){
puts(a[i]);
}
return0;
}
a[i][6]='\0';
为什么这里是a[i][6]='\0';不是a[i][7]='\0',a[i][6]不应该是temp里面的一个字符吗?我把a[i][6]='\0'改成a[i][7]='\0'有陷入死循环了,这是什么原因呢?
慕慕森
浏览 332回答 2
2回答

大话西游666

数组下标是从0开始的chara[3][7];代表3个长度为7的char数组,每一个数组的下标范围是a[i][0]...a[i][6]strncpy(a[i],temp,6);填充了a[i]的前6个字节:a[i][0]...a[i][5]a[i][6]是a[i]的最后一个元素,a[i][7]就溢出了

慕的地10843

讲个笑话给你听:“爸爸,桌上有几个苹果啊?”“6个啊。”“好像是7个啊!”“怎么会,你看,0,1,2,3,4,5,6,6个嘛!是你数错了!”
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript