zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )

方法语言 字符串 表示 strlen strcpy strcat strcmp
2023-06-13 09:17:41 时间

文章目录

C 字符串表示方式

C 字符串表示方法 :

  • 1.字符数组表示方法 : 本质是 字符 数组 char[] , 这里注意字符数组要以 NULL 或 ‘\0’ 结尾;
	// ① 字符数组 : 本质是 字符 数组 char[] , 这里注意字符数组要以 NULL 或 '\0' 结尾; 
	char string_c[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
  • 2.指针表示方法 : 使用指针形式表示字符串 , 默认末尾增加 ‘\0’ ;
	// ② 指针 : 使用指针形式表示字符串 , 默认末尾增加 '\0' ;
	char* string_c_p = "hello";
  • 3.字符串拼接打印 :
    • ① 打印字符串 , cout 后的 << 后可以打印 字符串 , 也可以打印变量 ;
    • ② 字符串拼接格式 : 输出 cout << 字符串或变量1 << 字符串或变量2 … << endl 可以拼接 输出信息
	//字符串打印 : 
	// ① 打印字符串 , cout 后的 << 后可以打印 字符串 , 也可以打印变量
	// ② 输出 cout << 字符串或变量1 << 字符串或变量2 ... << endl 可以拼接 输出信息
	cout << "string_c : " << string_c << endl;
	cout << "string_c_p : " << string_c_p << endl;
  • 4.代码 :
	//3. 字符串使用
	//C 字符串 表示方法 : 
	// ① 字符数组 : 本质是 字符 数组 char[] , 这里注意字符数组要以 NULL 或 '\0' 结尾; 
	char string_c[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
	// ② 指针 : 使用指针形式表示字符串 , 默认末尾增加 '\0' ;
	char* string_c_p = "hello";

	//字符串打印 : 
	// ① 打印字符串 , cout 后的 << 后可以打印 字符串 , 也可以打印变量
	// ② 输出 cout << 字符串或变量1 << 字符串或变量2 ... << endl 可以拼接 输出信息
	cout << "string_c : " << string_c << endl;
	cout << "string_c_p : " << string_c_p << endl;
  • 5.执行结果 :
string_c : hello
string_c_p : hello

C 字符串 拷贝 ( strcpy )

C 字符串 拷贝 方法 ( strcpy ) :

  • 1.方法参数 : strcpy 方法是拷贝字符串的方法 , 第一个参数是目标字符串 , 第二个参数是源字符串 ;
  • 2.方法作用 : 将 源字符串 拷贝到 目标字符串中 ;
  • 3.代码 :
	//C 语言中的字符串操作
	//拷贝字符串 
	char string_c_copy_destination[6];
	char string_c_copy_source[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
	// ① 参数 : strcpy 方法是拷贝字符串的方法 , 第一个参数是目标字符串 , 第二个参数是源字符串
	// ② 作用 : 该方法是将 源字符串 拷贝到 目标字符串中
	strcpy(string_c_copy_destination, string_c_copy_source);
	// ③ 打印拷贝结果 : 
	cout << "string_c_copy_destination : " << string_c_copy_destination << endl;
  • 4.执行结果 :

C 字符串 拼接 ( strcat )

C 字符串 拼接 ( strcat ) :

  • 1.方法参数 : strcpy 方法是拼接字符串的方法 , 第一个参数是目标字符串 , 第二个参数是源字符串 ;
  • 2.方法作用 : 将 源字符串 拼接到 目标字符串后面 , 组成新字符串 ;
  • 3.目标字符串大小 : 目标字符串一定要注明大小 , 并且其大小要大于 两个字符串实际大小之和 ; ( 否则会报错 )
  • 3.代码 :
	//拼接字符串 
	//① 定义目标字符串 : 拼接字符串的目标字符串的大小一定要大于等于要拼接的两个字符串大小之和, 否则会报错
	char string_c_cat_destination[30] = " cat dst ";
	char string_c_cat_source[] = " cat src ";
	//② 拼接字符串方法参数 : 第一个参数是目标字符串 , 第二个参数是源字符串
	//③ 目标字符串大小 : 注意 目标字符串的 大小一定要大于 两个字符串实际大小
	strcat(string_c_cat_destination, string_c_cat_source);
	//④ 打印字符串拼接结果 : 
	cout << "string_c_cat_destination : " << string_c_cat_destination << endl;
  • 4.执行结果 :

C 字符串 长度获取 ( strlen )

C 字符串 长度获取 ( strlen ) :

  • 1.方法参数 : 传入要获取长度的字符串 , 可以是字符数组 , 也可以是字符指针类型 ;
  • 2.方法作用 : 获取实际的字符串长度 , 即自动识别 ‘\0’ 位置 , 获取其长度 , 与所占用的内存大小无关 ;
  • 3.指定字符串内存大小 :
    • 内存大小 : 对于指定内存大小的字符串 , 即使其所占内存为 20 字节;
    • 字符串大小 : 其实际的字符长度是 5 , 该方法获取字符串大小是按照 ‘\0’ 标志截取 ( 不包含 ‘\0’ ) ;
char string_c_len2[20] = { 'h', 'e', 'l', 'l', 'o', '\0' };
  • 4.代码 :
	//获取字符串长度
	//① 参数 : 传入要获取的字符串 , 该长度不含 '\0' 结尾标志
	//② 作用 : 获取实际的字符串长度 , 即自动识别 '\0' 位置 
	//        获取其长度 , 与所占用的内存大小无关
	char string_c_len[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
	char string_c_len2[20] = { 'h', 'e', 'l', 'l', 'o', '\0' };
	char * string_c_len3 = "hello";
	
	//① 字符数组长度 , 测量从开始到 '\0' 的长度, 不包括 '\0'
	int len1 = strlen(string_c_len);
	//② 指定大小的字符数组长度 , 结果不是指定的大小的值 , 获取的是实际字符串长度
	int len2 = strlen(string_c_len2);
	//③ 指针表示的字符串 , 其获取的大小是实际字符串大小, 不包含自动添加的 '\0' 
	int len3 = strlen(string_c_len3);
	//④ 打印 三个字符串大小
	cout << "len1 : " << len1 
	     << " len2 : " << len2 
	     << " len3 : " << len3 
	     << endl;
  • 5.执行结果 :

C 字符串 对比 ( strcmp )

C 字符串 对比 ( strcmp ) :

  • 1.方法参数 : 参数是需要比较的两个字符串 , 第一个参数 str1 , 第二个参数 str2 ;
  • 2.方法作用 : str1 和 str2 两个字符串 , 从左到右 逐个对比 ASCII 码 大小 ;
  • 3.返回值 :
    • ① 如果 str1 等于 str2 , 返回 0;
    • ② 如果 str1 > str2 , 返回值 大于 0 ;
    • ③ 如果 str1 < str2 , 返回值 小于 0 ;
  • 4.附一张 ASCII 表 :
  • 5.代码示例 :
	//字符串比较
	// ① 参数说明 : 参数是需要比较的两个字符串 , 第一个参数 str1 , 第二个参数 str2
	// ② 对比规则 : str1 和 str2 两个字符串 , 从左到右 逐个对比 ASCII 码 大小 ; 
	//		a. 如果 str1 等于 str2 , 返回 0; 
	//		b. 如果 str1 > str2 , 返回值 大于 0 ;
	//		c. 如果 str1 < str2 , 返回值 小于 0 ;

	//定义需要比较的字符串
	char* string_c_comp_1 = "Hello";
	char* string_c_comp_2 = "Hello";
	char* string_c_comp_3 = "hello";

	// ① 两个字符串相等
	int cmp_result_1_2 = strcmp(string_c_comp_1, string_c_comp_2);
	// ② "Hello" 字符串 (H 对应 ASCII 72) 小于 "hello" 字符串 (h 对应 ASCII 104) , 返回值 小于 0
	int cmp_result_1_3 = strcmp(string_c_comp_1, string_c_comp_3);
	// ③ "hello" 字符串 (h 对应 ASCII 104) 大于 "Hello" 字符串 (H 对应 ASCII 72) , 返回值 大于 0
	int cmp_result_3_1 = strcmp(string_c_comp_3, string_c_comp_1);

	//输出字符串对比结果
	cout << "cmp_result_1_2 : " << cmp_result_1_2 
		<< " cmp_result_1_3 : " << cmp_result_1_3
		<< " cmp_result_3_1 : " << cmp_result_3_1
  • 6.执行结果 :
cmp_result_1_2 : 0 cmp_result_1_3 : -1 cmp_result_3_1 : 1