ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

字符数组与字符串

2021-09-11 22:58:12  阅读:116  来源: 互联网

标签:字符 str3 str1 str5 char 数组 printf 字符串


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

//将字符串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);//考题

标签:字符,str3,str1,str5,char,数组,printf,字符串
来源: https://blog.csdn.net/yanghl1215/article/details/120244327

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有