1.
2.sprintf函数
sprintf() 格式化输出函数(图形)
功能: 函数sprintf()用来作格式化的输出。
用法: 此函数调用方式为intsprintf(char *string,char *format,arg_list);
说 明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用 outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函 数将所要输出的格式送到第一个参数,然后显示输出。
函数名: sprintf
功 能: 送格式化输出到字符串中
用 法: intsprintf(char *string, char *farmat [,argument,…]);
3.
atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时(’\0’)才结束转化,并将结果返回(返回转换后的整型数)。
/*
* name:xif
* coder:xifan@2010@yahoo.cn
* time:08.20.2012
* file_name:my_atoi.c
* function:int my_atoi(char* pstr)
*/
int my_atoi(char* pstr)
{
int Ret_Integer = 0;
int Integer_sign = 1;
/*
* 判断指针是否为空
*/
if(pstr == NULL)
{
printf("Pointer is NULL\n");
return 0;
}
/*
* 跳过前面的空格字符
*/
while(isspace(*pstr) == 0)
{
pstr++;
}
/*
* 判断正负号
* 如果是正号,指针指向下一个字符
* 如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符
*/
if(*pstr == '-')
{
Integer_sign = -1;
}
if(*pstr == '-' || *pstr == '+')
{
pstr++;
}
/*
* 把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer
*/
while(*pstr >= '0' && *pstr <= '9')
{
Ret_Integer = Ret_Integer * 10 + *pstr - '0';
pstr++;
}
Ret_Integer = Integer_sign * Ret_Integer;
return Ret_Integer;
}
4.切片可以切取低位
字符串->整型
整型->字符串
5.结构体对齐问题
以2,4,8倍数的字节块来读写内存,要求各种类型数据按照一定的规则在空间上排列,这就是对齐。时钟周期,对内存进行刷新电路,保证信息存储在里边。
#include<stdio.h>
#include<ctype.h>
#include<assert.h>
#include<limits.h>
#pragma pack(1)//指定按照一字节对齐
struct Node
{
char ca;
double dx;
char cb;
};
int main()
{
Node x;
printf("%d \n", sizeof(x));
return 0;
}
不定义变量也可以计算字节个数(偏移量)强转
柔性数组 类运算
5.malloc函数(必须判空)
用free释放空间,释放空间不是销毁空间,而是把空间从已用变为未用。
6.动态内存管理
#include<stdio.h>
#include<ctype.h>
#include<assert.h>
#include<limits.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n = 5;
int i = 0;
int* ip = nullptr;
scanf_s("%d", &n);
ip = (int*)malloc(sizeof(int) * n);
if (nullptr == ip)exit(1);
for (int i = 0; i < n; ++i)
{
ip[i] = i;
}
for (int i = 0; i < n; ++i)
{
printf("%d", ip[i]);
}//动态内存管理
free(ip); //空悬指针
ip = NULL;//没有把指针变为空指针的话,则为失效指针
return 0;
}
6.动态规划题目:打家劫舍
#include<stdio.h>
#include<ctype.h>
#include<assert.h>
#include<limits.h>
#include<string.h>
#include<stdlib.h>
int MAX_INT(int a, int b)
{
return a > b ? a : b;
}
int rob(int* nums, int n)
{
if (nums == nullptr || n == 0) return 0;
int* dp = (int*)malloc(sizeof(int) * n);
if (dp == nullptr) return -1;
for (int i = 0; i < n; ++i) dp[i] = 0;
if (n == 1) return nums[0];
if (n == 2) return nums[0] > nums[1] ? nums[0] : nums[1];
dp[0] = nums[0];
dp[1] = nums[0] > nums[1] ? nums[0] : nums[1];
for (int i = 2; i < n; ++i)
{
dp[i] = MAX_INT(dp[i - 1], dp[i - 2] + nums[i]);
}
int max = dp[n - 1];
free(dp);
dp = nullptr;
return max;
}
int main()
{
int nums[] = { 2,7,9,3,1 };
int n = sizeof(nums) / sizeof(nums[0]);
int maxv = rob(nums, n);
return 0;
}