01字符串的输入与输出
定义字符串的三种方式
字符串输出
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