字符数组与字符串

写一个字符串拷贝函数,等待拷贝字符数组长度不能小于被拷贝字符串长度,否则将越界,程序崩溃。

//将字符串src复制到des中  a = b;
void Mystrcpy(char des[], char src[])
{
	int i;
	for (i = 0; src[i] != '\0'; i++)
	{
		des[i] = src[i];
	}
	des[i] = '\0';
}

//n:最多拷贝n个字符,不算'\0'
void Mystrcpy_s(char des[], int n, char src[])
{
	int i;
	for (i = 0; i < n && src[i] != '\0'; i++)
	{
		des[i] = src[i];
	}
	des[i] = '\0';
}

int main()
{
	int arr[10] = {1,2,3,4,5};
	int brr[10];
	//brr = arr;//error,数组不能整体赋值,只有初始化时可以整体赋值

	char str1[100] = "abcdefghijkl";
	char str2[100] = "xyz";
	char str3[100];
	char str4[100];
	char str5[4];
	//将str1的内容复制到str3   "abcd"
	//str3 = str1;//error,
	//str1[0] = str2[0];//char = char;
	Mystrcpy(str3,str1);
	strcpy(str4,str1);
	//将str1复制到str5中
	//Mystrcpy(str5,str1);//崩溃,不安全的原因
	//strcpy_s(str5, 4, str1);//安全版本的函数,建议函数,有的编译器没有这个函数
	Mystrcpy_s(str5,4-1,str1);
	printf("%s\n",str3);
	printf("%s\n", str4);
	printf("str5=%s\n", str5);
	return 0;
}

使用库函数

int main()
{
	char str1[] = "abcde";
	char str2[10];
	char str3[10];
	//使用库函数将str1的内容拷贝到str2和str3
	strcpy(str2,str1);
	strcpy(str3,str1);
	printf("%s,%s\n",str2,str3);
	char str4[10];
	//使用库函数将"hello"拷贝到str4
	strcpy(str4,"hello");
	printf("%s\n",str4);
	char str5[10];
	//使用库函数将"hello world"拷贝到str5
	strcpy(str5, "hello world");//越界,12个字符串在10个数组格里存不下
	printf("str5=%s\n", str5);

	return 0;
}

求字符数组长度和字符串长度

int main()
{
	char str1[100] = "abcde";
	char str2[] = "abcde";
	char str3[] = "abcd\0e";
	char str4[] = "abcd\0e\n";
	printf("%d,%d\n",sizeof(str1),strlen(str1));//100,5
	printf("%d,%d\n", sizeof(str2), strlen(str2));//6,5
	printf("%d,%d\n", sizeof(str3), strlen(str3));//7,4
	printf("%d,%d\n", sizeof(str4), strlen(str4));//8,4

	return 0;
}

区分字符数组与字符串
字符数组 ,char arr[10]; 利用char定义的数组。
字符串:用 ""包括的字符序列,字符串的末尾有一个隐含的’\0’
字符数组是否为字符串,就看字符数组是否有’\0’ ,有’\0’就是字符串,否则不是。

	char str1[10] = { 'a','b','c','d','e','f','g','h','i','j' };//字符数组,不是字符串
	char str2[10] = { 'a','b','c','d','e','f','g','h'};//字符数组,是字符串
	char str3[] = { 'a','b','c','d','e','f','g','h' };//字符数组,不是字符串
	char str4[10] = "abcde";//字符数组,是字符串
	char str5[] = "abcde";//字符数组,是字符串
	const char* str6 = "abcde";//不是字符数组,是字符串
	char str7[] = { 'a','b','c','d','\0','e' };//是字符数组,是字符串
	printf("%s\n",str1);
	str2[1] = 0;
	printf("%s\n",str2);//考题
上一篇:C: 编译错误:expected identifier or ‘(’ before numeric constant


下一篇:NewReplacer使用技巧