#include <bits/stdc++.h>
using namespace std;

char arr[1000];
char arr1[1000];
char arr2[1000];

int main() {
	
	// 1、字符数组的基本操作 
	
//	memset(arr, 0, sizeof(0)); // 定义局部变量数组,务必置零 

//	cin >> arr; // cin 输入字符数组,遇空格或回车停止
	cin.getline(arr, sizeof(arr)); // cin.getline  整行输入字符数组,遇回车停止
//	arr[5] = '\0'; // 字符串 遇 '\0' 结束 

	cout << arr << endl; // 输出 字符数组 
	
	cout << "strlen = " << strlen(arr) << endl; // 字符数组的有效长度 
	cout << "sizeof = " << sizeof(arr) << endl; // 字符数组的定义长度
	
	// 逐个字符 批量数组字符数组 
	for (int i = 0; i < strlen(arr); i++) {
		cout << arr[i] << " ";
	}
	cout << endl;
	
	// 2、字符 常用处理函数

	char c;
	cin >> c;
	cout << "isdigit : " << isdigit(c) << endl; // 判断数字字符
	cout << "isalpha : " << isalpha(c) << endl; // 1 大写字母, 2 小写字母, 0 不是字母
	cout << "isalnum : " << isalnum(c) << endl; // 判断 字母 或 数字 
	cout << "islower : " << islower(c) << endl; // 判断 小写字母 
	cout << "isupper : " << isupper(c) << endl; // 判断 大写字母
	cout << "tolower : " << char(tolower(c)) << endl; // 转换 小写字母 
	cout << "toupper : " << char(toupper(c)) << endl; // 转换 大写字母 

	/*
    测试输出:
	
	E
	isdigit : 0
	isalpha : 1
	isalnum : 1
	islower : 0
	isupper : 1
	tolower : e
	toupper : E
	*/	
	
	// 3、字符数组 常用处理函数
	
	// (1) strcat 字符数组 拼接
	 
	cin >> arr1 >> arr2;
	
	strcat(arr1, arr2); // 后面数组 拼接到 前面数组
	cout << arr1 << endl;
	cout << arr2 << endl; 
	
	// 拼接到 第三方字符数组
	 
	strcat(arr, arr1);
	strcat(arr, arr2);
	cout << arr << endl;
	
	
	// (2) strcpy 字符串复制
	
	cin >> arr1 >> arr2;
	
	strcpy(arr1, arr2); // 后面数组 复制到 前面数组 
	
	cout << arr1 << endl;
	cout << arr2 << endl;
	
	// (3) strcmp 字符串比较 :1 大于 , 0 等于 , -1 小于 
	
	cin >> arr1 >> arr2;
	
	cout << strcmp(arr1, arr2) << endl; // 逐位比较 ASCII : 1 大于 , 0 等于 , -1 小于 
	 
	return 0;
}