2.16 字符与入口程序

1.ascll码
7位或8位来表示一个字母
同时第八位为1为扩展ascll码 我们也能用扩展ascll码表示汉字
2.GB2312
3.sacll码问题
由于扩展码不统一,每个国家都有一套标准,所以会乱码
对此出现了UNICODE码
Unicode只有一个字符集
Unicode中的每个字符都是16位宽而不是8位宽(注意每个)
部分知识在代码中

点击查看代码

#include<stdio.h>
#include <locale.h>
#include<Windows.h>

int main()
{
	setlocale(LC_ALL, "");
	//ASCII:d6 d0
	//UNICODE:4e 2d


	char x = '中';

	wchar_t x1 = '中';
	/// 宽字符 完成存储
	//UNICODE 表
	wchar_t x2 = L'中';

	//使用拓展ASCII编码表  以00(\0)结尾
	char x3[] = "中国";
	//d6 d0 b9 fa 00   		
	//使用UNICODE编码表 以00 00(\0\0)结尾
	wchar_t x4[] = L"中国";
	//2d 4e fd 56 00 00
	//Unicode中的每个字符都是16位宽而不是8位宽
	printf("%d\n%d\n", sizeof(x3),sizeof(x4));
	wprintf(L"%s\n", x4);
	strlen(x3);
	wcslen(x4);

	wchar_t x6[] = L"美国";
	wchar_t x5[] = L"中国";
	wcscpy_s(x6, x5);
	//x6内存数据  2d 4e fd 56 00 00 

	return 0;
}
char wchar_t //多字节字符类型 宽字符类型

printf wprintf //打印到控制台函数

strlen wcslen //获取长度

strcpy wcscpy //字符串复制

strcat wcscat //字符串拼接

strcmp wcscmp //字符串比较

strstr wcsstr //字符串查找

1.WIN32 DLL

主要是存放在 C:\WINDOWS\system32 下面所有的dll

几个DLL
Kernel32.dll:最核心的功能模块,比如管理内存、进程和线程相关的函数等.
GDI32.dll:全称是Graphical Device Interface(图形设备接口),包含用于画图和显示文本的函数
User32.dll:是Windows用户界面相关应用程序接口,如创建窗口和发送消息等.
dll只是做一个接口 实际调用的还是内核中的函数

3、Win32 API中的宽字符和多字节字符

wchar_t被称为宽字符,一个wchar_t占2个字节。之所以叫宽字符是因为所有的字都要用两个字节(即一个wchar_t)来表示,不管是英文还是中文。
char叫多字节字符,一个char占一个字节,之所以叫多字节字符是因为它表示一个字时可能是一个字节也可能是多个字节

Windows是使用C语言开发的,Win32 API同时支持宽字符与多字节字符.

点击查看代码
	CHAR cha[] = "中国";
	WCHAR chw[] = L"中国";
	/// tchar 是宏 根据当前项目
	
	//typedef WCHAR TCHAR, *PTCHAR;
	TCHAR cht[] = TEXT("中国");

速览定义查看原类型

例如 MessageBoxW(0,L"内容宽字节",L"标题",MB_OK);
分为多个版本 BOX A 如果无A W 也是自动转换
MessageBox(0,TEXT("根据项目字符集决定"),TEXT("标题"),MB_OK);
Windows提供的API 凡是需要传递字符串参数的函数,都会提供两个版本和一个宏.

3.win32 程序创建
int WINAPI WinMain(
HINSTANCE hInst 当前进程的标号
,HINSTANCE prevhInst 该程序的上一个进程的标号
,LPSTR cmd //是表示传递的命令 表示一个指针,指向一个以'/0'结尾的字符串
,int show//使用宏指令来控制窗口 窗口显示
)函数
{
return 0;
}

posted @ 2023-02-16 07:55  逆向狗  阅读(37)  评论(0)    收藏  举报