1、C语言没有字符串类型,通过字符数组模拟,C语言字符串,以字符‘\0’, 数字0。
2、数组指定长度后,后面没有赋值的元素,自动补0。
char buf[100] = { 'a', 'b', 'c' };
3、所有元素赋值为0。
char buf[100] = { 0 };
4、数组中 0 '\0' '0' 辨析。
(1)0就是数字0
(2)'\0'就是转义的数字0,本质上与数字0一样。
(3)'0' 就是字符0,类似于字符'1'等等。
char buf1[50] = { '1', 'a', 'b', '0', '7' };
printf("buf1 = %s\n", buf1);
char buf250] = { '1', 'a', 'b', 0, '7' };
printf("buf2 = %s\n", buf2);
char buf3[50] = { '1', 'a', 'b', '\0', '7' };
printf("buf3 = %s\n", buf3);
5、strlen: 测字符串长度,不包含数字0,字符'\0' sizeof:测数组长度,包含数字0,字符'\0'。
6、\012相当于\n,数字结合转义字符,会有特殊意义。
char str[] = "\0129";
printf("%s\n", str);
7、 测试源码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*c语言没有字符串类型,通过字符数组模拟
C语言字符串,以字符‘\0’, 数字0
*/
int main(void)
{
//不指定长度, 没有0结束符,有多少个元素就有多长
char buf[] = { 'a', 'b', 'c' };
printf("buf = %s\n", buf);
//指定长度,后面没有赋值的元素,自动补0
char buf2[100] = { 'a', 'b', 'c' };
printf("buf2 = %s\n", buf2);
//所有元素赋值为0
char buf3[100] = { 0 };
//char buf4[2] = { '1', '2', '3' };//数组越界
char buf5[50] = { '1', 'a', 'b', '0', '7' };
printf("buf5 = %s\n", buf5);
char buf6[50] = { '1', 'a', 'b', 0, '7' };
printf("buf6 = %s\n", buf6);
char buf7[50] = { '1', 'a', 'b', '\0', '7' };
printf("buf7 = %s\n", buf7);
//使用字符串初始化,常用
char buf8[] = "agjdslgjlsdjg";
//strlen: 测字符串长度,不包含数字0,字符'\0'
//sizeof:测数组长度,包含数字0,字符'\0'
printf("strlen = %d, sizeof = %d\n", strlen(buf8), sizeof(buf8));
char buf9[100] = "agjdslgjlsdjg";
printf("strlen = %d, sizeof = %d\n", strlen(buf9), sizeof(buf9));
printf("test");
//\012相当于\n
char str[] = "\0129";
printf("%s\n", str);
printf("\n");
system("pause");
return 0;
}
printf("\n");
system("pause");
return 0;
}
8、测试结果: