(5)字符串/内存管理/文件/结构体/位运算/预处理器

01字符串的输入与输出

定义字符串的三种方式
1. 定义字符数组,加上
字符串输出
scanf不判断长度,可能导致溢出。
fgets(数组名,数组长度,stdin)获取输入。
puts自带换行功能。

02 字符串处理

计算字符串长度
int nRet = strlen(string);
拼接字符串
strcat(拼到哪,从哪拷贝);
比较字符串
strcmp(strA,strB);
返回值为零则字符串相同,非零则字符串不同。
拷贝字符串
strcpy(拷到的位置,从哪拷,拷贝多长);
将不同类型的数据存到一个数组中
sprintf(strD,“%s %d %hd”, strB, nNum, nH);

03 补充知识

块的概念
花括号里面的;
局部变量的生存空间在一个块里面。
变量使用寄存器
register int a;
有机会使用寄存器。
自动类型变量
auto str = “day3”;
auto nNum = 12;
f11程序内单步调试f10进入函数内部单步调试

04 内存管理

申请内存
char* p = (char *)malloc(50 * sizeof(char));
长度 单位是字节;申请了50的字符数组。
释放内存
free§;
memset
memset(p, 0, 50 * sizeof(char));
第一个是数组名,第二个是用什么替换,第三个参数是替换多少。

05 文件输入与输出

char * MyReadFile(char * szFilePath)
{
	FILE *pFile;
	// r只读w删空了写a追加
	//rb wb ab二进制的意思
	pFile = fopen(szFilePath,"rb");
	if (pFile == NULL)
	{
		printf("open file failed!\n");
		system("pause");
		fclose(pFile);
		exit(0);//0正常退出 1异常退出
	}
	fseek(pFile, 0, SEEK_END);//第二个参数 偏移 不重要 第三个参数 宏 这里是移动到末尾
	int nReadFileSize = ftell(pFile);//获取文件的大小
	rewind(pFile);//移动回来
	char * szReadTextBuffer = (char *)malloc((nReadFileSize + 1) * sizeof(char));
	if (szReadTextBuffer == NUlLL)
	{
		printf("malloc memory  failed!\n");
		system("pause");
		fclose(pFile);
		exit(0);//0正常退出 1异常退出
	}
	memset(szReadTextBuffer, 0, (nReadFileSize + 1) * sizeof(char));//清空
	int nReadRet = 0;
	nReadRet = fread(szReadTextBuffer,1.nReadFileSize, pFile);
	if (nReadRet != nReadFileSize)
	{
		printf("read file  failed!\n");
		system("pause");
		fclose(pFile);
		exit(0);//0正常退出 1异常退出
	}
	fclose(pFile);
	return szReadTextBuffer;
}

int MyWriteFile(char * szFilePath, char * szStr)
{
	FILE *pFile;
	// r只读w删空了写a追加
	//rb wb ab二进制的意思
	pFile = fopen(szFilePath,"wb");
	if (pFile == NULL)
	{
		printf("open file failed!\n");
		system("pause");
		fclose(pFile);
		exit(0);//0正常退出 1异常退出
	}
	int fwrite(szStr,(sizeof(szStr)+1), 1, pFile);//1 按照1字节的方式输出出去
	fclose(pFile);
	return nRet;
}

06 结构体与枚举类型

结构体在之前的文章中提到过很多次了。
结构体接受强制使缓冲区的内容按照结构体的形式储存。
枚举类型

enum lv
{
	low,
	medium,
	high
};
low = 0, medium = 1, high = 2

枚举就是给数字起一个名字。

07 typedef的应用

typedef char name;

给数据类型起一个别名
函数指针用法
int add(int a, int b)
{
return a + b;
}
typedef int (*xadd)(int a, int b);

xdd a = add;
int c = a(1,2);
结果c=3。

08 位运算

菜鸟教程里面截得:
在这里插入图片描述

09 预处理器

#define add(x) x+1
#define add(a,b) a+b
在VS中写C语言一般我们会在预处理器中添加防警告。
defien完了不想要了直接#undef就可,取消宏定义

//判断情况是否定义
#ifdef _WIN32
	int x  = 10;
#endif

//类似于if-else,条件宏预处理的使用
#if 判断条件
	x  = 100;
#elif 判断条件
	x = 233l
#endif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值