33.【C/C++ char 类型与Ascii大整合,少一个没考虑你打我】

发布于:2023-01-09 ⋅ 阅读:(543) ⋅ 点赞:(0)

char 函数大总结

全是干货内容有点长!!!!!!!!!!!

(一)、什么是char类型?

在这里插入图片描述

1、char是字符指针数据类型,它的本质是个指针,也就是地址,它指向了一个char类型的内存单元,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说地址指向该变量单元,将地址形象化的称为指针。意思是通过它能找到以它为地址的内存单元。
2、字符变量的取值是字符常量即单个字符。字符变量的类型说明符是char。字符变量类型说明的格式和书写规则都与整型变量相同。C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时, 允许把字符变量按整型量输出,也允许把整型量按字符量输出。
3、字符通常应用于在电脑和电信领域中,是一个信息单位,对使用字母系统或音节文字等自然语言,字符大约对应为一个音位、类音位的单位或符号。字符是可使用多种不同字符方案或代码页来表示的抽象实体。

(二)、在C的引用方法

  1. 如果单独定义一个字符: eg :char c; %c
  2. 如果定义一个字符串: eg char a[]; 或则 char* . %s ;

(三)、char的常用经典列题

在这里插入图片描述

1.求字符串的长度:

格式: strlen(char);

1.1代码展示:

#include <iostream>
using namespace std;
int main()
{
 char s[] = "abcdef";
 int m;
 m = strlen(s);
 cout << "char类型的长度为:" << m << endl;
 return 0;
}

1.2效果展示:

在这里插入图片描述

2.字符串的合并:

格式:strcat(char*,const char * )

2.1代码展示:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
 char s[6];
 cout << "请输入第一个字符串:" << endl;
 cin >> s;
 const char* s1 = "456";
 cout << "链接后为:" << strcat(s, s1) << endl;
 return 0;
}

2.2效果展示:

在这里插入图片描述

3.字符串和字符指针的联结

3.1代码展示:

#include <iostream>
using namespace std;
int main()
{
 char a[]="hello";
 char* s=a;
 cout<<"指针访问数组的格式:"<<endl;
 int i;
 for(i=0;i<strlen(a);i++)
 {
  cout<<*s++;
 }
 return 0;
}

3.2效果展示:

在这里插入图片描述

4.字符串指针的输出:

4.1代码展示:

#include <iostream>
using namespace std;
int main()
{
 char* s; //字符串指针变量
 s = "hello"; //把字符串赋值给字符串指针,编译器会给字符串一个地址;
 cout << "字符串的地址:" << &s << endl; //表示变量本身所在的内存单元地址
 cout << "字符串的地址:" << s << endl; //表示s的单元所保存的地址
 for (int i = 0; i < 5; i++)
 {
  cout << "字符串指针的值为:" << s[i] << endl; //这里会输出字符串的首个元素,而不是整个字符串
 }
 cout << "字符串指针分配的单元:" << sizeof(s) << endl; //用来保存地址的
 return 0;
}

4.2效果展示:

在这里插入图片描述

5.

(四)、char与char*的区别:

在这里插入图片描述

1.char可以手动输入char*不能

1.1代码展示:

#include <iostream>
using namespace std;
int main()
{
 char s[10];
 cout << "请输入字符串s的数据:" << endl;
 for (int i = 0; i < 3; i++)
 {
  cin >> s[i];
 }
 cout << "字符串s[]的长度为:" << 3 << endl;
 cout << "字符串s[]的数值为:";
 for (int i = 0; i < 3; i++)
 {
  cout << s[i] << " ";
 }
 return 0;
}

1.2效果展示:

在这里插入图片描述

2.字符串指针必须初始化,数组不用

2.1代码展示:

#include <iostream>
using namespace std;
int main()
{
 char* s; //字符串指针变量
 s = "hello"; //把字符串赋值给字符串指针,编译器会给字符串一个地址;
 cout<<"字符串的地址:"<<&s<<endl; //表示变量本身所在的内存单元地址
 cout<<"字符串的地址:"<<s<<endl; //表示s的单元所保存的地址
 cout<<"字符串指针的值为:"<<s[1]<<endl; //这里会输出字符串的首个元素,而不是整个字符串
 cout<<"字符串指针分配的单元:"<<sizeof(s)<<endl; //用来保存地址的
 return 0;
}

2.2效果展示:

在这里插入图片描述

3.两个char*判断相等不相等(==)

3.1.代码展示:

#include <iostream>
using namespace std;
int main()
{
 const char* s = "abc";
 const char* s1 = "abc";
 if (s == s1)
 {
  cout << "相等" << endl;
 }
 else
  cout << "不相等" << endl;
 return 0;
}

3.2.效果展示:

在这里插入图片描述

4.两个string 可以用==

4.1代码展示:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
 string s = "abc";
 string s1 = "abc";
 if (s==s1)
 {
  cout << "相等" << endl;
 }
 else
  cout << "不相等" << endl;
 return 0;
}

4.2效果展示:

在这里插入图片描述

5.一个char*与string可以用==

5.1代码展示:

 #include <iostream>
#include <string.h>
using namespace std;
int main()
{
 string s = "abc";
 const char* s1 = "abc";
 if (s==s1)
 {
  cout << "相等" << endl;
 }
 else
  cout << "不相等" << endl;
 return 0;
}

5.2效果展示:

在这里插入图片描述

4.两个char*也可以用strcmp

4.1代码展示:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
 const char* s = "abc";
 const char* s1 = "abc";
 if (strcmp(s ,s1)==0)
 {
  cout << "相等" << endl;
 }
 else
  cout << "不相等" << endl;
 return 0;
}

4.2效果展示:

在这里插入图片描述

5.一个char*与一个string不可以用strcmp

5.1代码展示:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
 string s = "abc";
 const char* s1 = "abc";
 if (strcmp(s ,s1)==0)
 {
  cout << "相等" << endl;
 }
 else
  cout << "不相等" << endl;
 return 0;
}

5.2效果展示:

在这里插入图片描述

6.字符串的结束以分号为单位:

#include <iostream>
using namespace std;
void main()
{
 char s1[]="ABC"
  "DEF";
//********error********
 char s2[]="ABC\
DEF";
//********error********
 char s3[]="ABC" 
  "DEF";
 cout<<s1<<endl;
 cout<<s2<<endl;
 cout<<s3<<endl;
 return;
}
————————————————
版权声明:本文为CSDN博主「吉士先生.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_69683957/article/details/125842311

(五)、ASCii码的应用

在这里插入图片描述

1.什么是ASCii码

ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。

2.Ascii表的排序规则:

大小规则
常见ASCII码的大小规则:数字< 大写字母 < 小写字母
1.数字比字母要小。如 “7”<“F”;
2.数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
3.字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
4.同个字母的大写字母比小写字母要小32。如“A”<“a” 。
几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48

3.Ascii码标准表

在这里插入图片描述

4.Ascii码的经典用法:

1.英文字母进行大小写转化

1.1代码展示:

#include <iostream>
using namespace std;
int main()
{
 string s;
 cout << "请输入一个字符串:" << endl;
 cin >> s;
 for (int i = 0; i < s.length(); i++)
 {
  if (s[i] >= 'A' && s[i] <= 'Z') //判断是否是大写的
  {
   s[i] = s[i] + 32;      //大小写相差32          
  }
  else if (s[i] >= 'a' && s[i] <= 'z') //判断是否是小写 的
  {
   s[i] = s[i] - 32;
  }
 }
 cout << "改变后的数据为:" << endl;
 for (int i = 0; i < s.length(); i++)
 {
  cout << s[i];
 }
 return 0;
}

1.2效果展示:

在这里插入图片描述

2.输出单个数字字符

2.1代码展示:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
	char c = '3';
	cout << c << endl;      //输出的是一个字符3
	return 0;
}

2.2效果展示:

在这里插入图片描述

3.输出单个英文字符

3.1代码展示:

#include  <iostream>
using namespace std;
int main()
{
	char c = 'a';     // 输出字符a
	cout << c << endl;
}

3.2效果展示

在这里插入图片描述

4.数字字符和整数相加

4.1代码展示:

#include <iostream>
using namespace std;
int main()
{
	char c = '3'+2;       //字符5
	cout << c << endl;
	return 0;

}

4.2效果展示:

在这里插入图片描述

5.数字字符加数字字符

5.1代码展示:

#include  <iostream>
using namespace std;
int main()
{
	char c = '2'+'36';
	cout << c << endl;      //字符h
}

5.2效果展示:

6.英语字符和整数相加

6.1代码展示:

#include <iostream>
using namespace std;
int main()
{
	char c = 'a'+2;
	cout << c << endl;      //字符c
	return 0;
}

6.2效果展示:

在这里插入图片描述

7.英语字符加英语字符

7.1代码展示:

#include  <iostream>
using namespace std;
int main()
{
	char c = 'a'+'a';
	cout << c << endl;
}

7.2效果展示:

==抱歉 输出错误。

8.利用字符生成ascii码

8.1代码展示:

#include <iostream>
using namespace std;
int main()
{
 int x;
 char c='a';     //c=‘a'
 x =c;
 cout << x << endl;
}

8.2效果展示:

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到