头文件定义
#ifndef _TEST_H_
#define _TEST_H_
int fac (int n);
char *reverse(char *s);
int test(void);
void ot(void);
#endif
#include <stdio.h>
#include <stdlib.h>
字符串数字互转
# d2s
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
# s2d
● atof():将字符串转换为双精度浮点型值。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
字节长度
void func(){
void *vp = NULL;
char *cp = NULL;
int *ip = NULL;
double *dp =NULL;
printf("%d\n", sizeof(*vp));
printf("%d\n", sizeof(*cp));
printf("%d\n", sizeof(*ip));
printf("%d\n", sizeof(*dp));
}
序列迭代
void func(){
int a[] = {1,2,3,4};
int i=0;
int lenth = sizeof(a)/sizeof(typeof(a[0]));
for(; i<lenth; i++){
printf("%d\n", a[i]);
}
}
字符串迭代
void func(){
char *str = "jaksdjfl";
while(*str){
printf("%c\n", *str);
str++;
}
}
动态内存列表
void func(){
int *p = (int *)malloc(sizeof(int)*5);
*p = 0, p[1] = 1;
printf("%d %d\n", *p,p[1]);
free(p);
}
交换数据
void func(){
int i1 = 10 ,i2 = 20;
int size = sizeof(int);
void *vp = (void*)malloc(size);
memcpy(vp, &i1, size);
memcpy(&i1, &i2, size);
memcpy(&i2, vp, size);
printf("%d %d\n", i1,i2);
}
交换内存
void func(){
int i1 = 10 ,i2 = 20, *p1 = &i1, *p2 = &i2;
printf("%d %d\n", p1,p2);
printf("%d %d\n", i1,i2);
void *vp = NULL;
vp = p1;
p1 = p2;
p2 = vp;
printf("%d %d\n", p1,p2);
printf("%d %d\n", i1,i2);
}
系统程序控制, 移动窗口
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <string.h>
void open(char *path){
ShellExecute(NULL,"open",path,NULL,NULL,1);
}
void close(char *app){
char *pre = "taskkill /f /im ";
int size = strlen(pre) + strlen(app);
char *cmd = (char *)malloc(size);
strcpy(cmd, pre);
strcat(cmd, app);
system(cmd);
free(cmd);
}
void moveByRec(HWND win, int y){
if (y>0){
SetWindowPos(win, NULL, 0, y, 300, 400, 1);
Sleep(30);
moveByRec(win, y-10);
}
}
void moveByFor(HWND win, int y){
for(;y>0;y-=10){
SetWindowPos(win, NULL, 0, y, 300, 400, 1);
Sleep(30);
}
}
void moveByWhile(HWND win, int y){
while(y>0){
SetWindowPos(win, NULL, 0, y, 300, 400, 1);
Sleep(30);
y-=10;
}
}
void moveByDoWhile(HWND win, int y){
do{
SetWindowPos(win, NULL, 0, y, 300, 400, 1);
Sleep(30);
y-=10;
}
while(y>0);
}
void moveByGoto(HWND win, int y){
loop:
if(y>0){
SetWindowPos(win, NULL, 0, y, 300, 400, 1);
Sleep(30);
y-=10;
goto loop;
}
}
void moveWin(){
HWND win = FindWindowA("TXGuiFoundation", "QQ");
if (win == NULL){
printf("no find the win \n");
}
else{
printf("finded the win \n");
moveByRec(win, 600);printf("moveByRec\n");
moveByFor(win, 600);printf("moveByFor\n");
moveByWhile(win, 600);printf("moveByWhile\n");
moveByDoWhile(win, 600);printf("moveByDoWhile\n");
moveByGoto(win, 600);printf("moveByGoto\n");
}
}
int main(){
char *path = "D:\\program\\QQ\\Bin\\QQScLauncher.exe";
printf("opening %s\n", path);
open(path);
Sleep(5000);
moveWin();
close("QQ.exe");
return 0;
}
生产随机数
#include <stdio.h>
#include <time.h>
void randInt(int size, int *arr, int max){
time_t ts;
unsigned int num = time(&ts);
srand(num);
int i = 0;
for(;i<size;i++){
*(arr+i)=rand()%max;
}
}
排序算法
void sort(int *arr, int size){
int i = 0, j;
void *p = (void*)malloc(sizeof(int));
for(;i<size;i++){
j = i+1;
for(;j<size;j++){
if(arr[i] > arr[j]){
printf("change pos %d,%d\n", arr[i], arr[j]);
memcpy(p, arr+i, sizeof(int));
memcpy(arr+i, arr+j, sizeof(int));
memcpy(arr+j, p, sizeof(int));
}
}
}
}
二分法查找
int findBin(int tgval, int *arr, int size){
sort(arr, size);
int beg = 0, mid, end = size-1;
while(beg <= end){
mid = (beg+end)/2;
printf("beg=%d mid=%d end=%d\n", beg, mid, end);
if (tgval == arr[mid]){
printf("find it\n");
printf("idx=%d,arr[idx]=%d\n",mid, arr[mid]);
return mid;
}else if(tgval > arr[mid]){
beg = mid+1;
}else{
end = mid-1;
}
}
}
打印序列
void ptls(int *arr, int lenth){
printf("[");
int i=0;
for(;i<lenth;i++){
if(i==lenth-1)
printf("%d",arr[i]);
else
printf("%d,",arr[i]);
}
printf("]\n");
}