C语言中不是字符串数组才需要长度比有效字符数多1才可以正常输出吗,为啥字符数组也要这样,用的是C++6.0,只有将是s1定义比3大(因为原来有两个字符qw,长度为2)才能正常打印,为什么呢?
你这样写是不正确的
//vc6.0调试下
char s1[]={'q','w'}; //错误
char s1[]={'q','w','\0'}; // 正确的
char s1[3]={'q','w'}; //正确的
char s1[]="qw";//正确的,这种格式下 系统自动 加 \0
把 谭浩强 的那段说明 仔细看看
# include <stdio.h>
int main (void)
{ char s1[]={'q','w'}; //错误
char s2[]={'q','w','\0'}; // 正确的
char s3[3]={'q','w'}; //正确的
char s4[]="qw";//正确的,这种格式下 系统自动 加 \0
printf("%s\n%s\n%s\n%s\n",s1,s2,s3,s4);
}
可以尝试用
putchar(s1[0]);
putchar(s1[1]); //正常输出 qw