一、字符串崩溃的原因:1、试图修改字符串常量的值;2、越界
eg:
char str2[] = "abcde" ; //字符数组,包括'\0'也是字符串
str1[0] = 'x'; //error 作为一个字符串常量只有读权限,没有写权限
str2[0] = 'x'; //ok
strcpy(str1 , "xyz"); //error 作为一个字符串常量只有读权限,没有写权限
strcpy(str2 , "hello world"); //error 越界
二、字符串
//字符串 #include <stdio.h> #include <string.h> int main() { char str1[100] = "abcde";//100 , 5 char str2[] = "abcde";//6 , 5 char str3[100] = "abcdef\0ijka\n";//100 , 6 char str4[] = "abcdef\0ijka\n";//13(最后还有一个'\0') ,6 char *str5 = "abcde";//4(指针长度都为 4), 5 char *str6 = "abcdef\0ijka\n";//4 , 6 printf ("%6d%6d\n",sizeof(str1),strlen(str1));//strlen统计str字符串的字符个数,不包括 '\0' printf ("%6d%6d\n",sizeof(str2),strlen(str2)); printf ("%6d%6d\n",sizeof(str3),strlen(str3)); printf ("%6d%6d\n",sizeof(str4),strlen(str4)); printf ("%6d%6d\n",sizeof(str5),strlen(str5)); printf ("%6d%6d\n",sizeof(str6),strlen(str6)); return 0; }