请问为什么我的输出结果很奇怪 理应是1995.11.11 但实际却是 birth:1995.11.11110111199511111101
#include<stdio.h>
int main(){
char sfz[18];
char sr[10];
char sex;
scanf("%s",sfz);
int i,k;
for(k=0,i=6;k<=9,i<=13;k++,i++){
if(k==4){
sr[k]='.';
i--;
continue;
}
if(k==7){
sr[k]='.';
i--;
continue;
}
sr[k]=sfz[i];
}
if(sfz[16]%2==0){
sex='F';
}
else{
sex='M';
}
printf("birth:%s\n",sr);
printf("sex:%c",sex);
return 0;
}
字符数组就是指向一块连续内存的内存地址指针常量,数组长度要比实际存放数据长度多1,用于在最后一位存放结束符'\0',%s输出时遇到这个结符就认为数据已经结束。否则,如果数组及其之后的这段连续内存中刚好有数据,也会一起输出,出现意想不到的结果。