1. system("pause");
2.long long a = 0LL;
3.printf("%lld",a);
4.fflush(stdin);
8. scanf_s()
9. strchr 从前往后寻找 strrchr 反向寻找 返回地址
14.fgetws() iswlower() ...
20.读取
22.
2.long long a = 0LL;
3.printf("%lld",a);
4.fflush(stdin);
5.for (; (clock()-now) < (CLOCKS_PER_SEC*2) ;)
6.连接字符串
char a[40] = "this is a big ";
char b[] = "game show! WO~";
int count1 = 0;
int count2 = 0;
while(a[count1])
count1++;
while(b[count2])
count2++;
count2 = 0;
while(a[count1++]=b[count2++]);
7.数组字符串char string[2][30] = {"hello ","C.You know~"};
int count[] = {0,0};
int i =0;
for(i=0;i<2;i++)
{
while(string[i][count[i]])
count[i]++;
}
char new[count[0]+count[1]+1];
count[0] = 0;
while(string[0][count[0]])
{
new[count[0]] = string[0][count[0]];
count[0]++;
}
count[1] = 0;
while(new[count[0]++]=string[1][count[1]++]);
printf("new:%s\n",new);
8. scanf_s()
9. strchr 从前往后寻找 strrchr 反向寻找 返回地址
10.strstr 寻找字符串
11.输入字符串
char buffer[90];
gets(buffer);
12.更改字符串大小写char a[] = "AbCdEfG";
for(int i=0;(a[i] = tolower(a[i]))!='\0';i++);
13.宽字符串wchar_t a[] = L"abc"; 输出 %S <wchar.h> wcsXXX14.fgetws() iswlower() ...
15.int* p = (int*) calloc(50,sizeof(int));
16.代码片段
16.代码片段
const size_t MAX_LENGTH = 100;
int main()
{
char word[MAX_LENGTH];
char* p = word;
int index;
char* words[3] = {NULL};
for (int i=0;i<3;i++)
{
index=0;
fflush(stdin);
printf("请输入字符串:\n");
while(1)
{
*(p+index++) = getchar();
if(*(p+index-1)=='\n')
{
*(p+index-1) = '\0';
words[i] = (char*)malloc(sizeof(char)*index);
strcpy(words[i],word);
break;
}
if(index==MAX_LENGTH-1)
{
*(p+index) = '\0';
//words[i] = p;
words[i] = (char*)malloc(sizeof(char)*(index+1));
strcpy(words[i],p);
break;
}
}
}
17.C语言真心牛X int any_function(int(*pfun)(int,int),int x,int y);#include <stdio.h>
#include <stdlib.h>
int add(int,int);
int sub(int,int);
int calc(int (*p)(int,int),int,int);
int main(void)
{
printf("%d\n",calc(add,1,2));
printf("%d\n",calc(sub,2,1));
system("pause");
return 0;
}
int add(int a,int b)
{
return a+b;
}
int sub(int a, int b)
{
return a-b;
}
int calc(int (*p)(int,int),int a,int b)
{
return p(a,b);
}
18.可变参数#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
int func(int a,int b,...)
{
int sum = a+b;
int value = 0;
va_list parg;
va_start(parg,b);
while((value = va_arg(parg,int)) != 0)
sum += value;
va_end(parg);
return sum;
}
int main(void)
{
printf("func = %d\n",func(1,2,3,0));
system("pause");
return 0;
}
19.wscanf(L"%lf",&variable); 20.读取
printf("输入身份证号码:\n");
scanf("%*6d%4d%2d%2d",&year,&month,&day);
printf("出生信息:%d年%d月%d日",year,month,day);
21. getchar ungetc22.
#include <stdio.h>
#include <limits.h>
#include <wchar.h>
#include <ctype.h>
#include <wctype.h>
#include <stdlib.h>
int main()
{
int count = 0;
char ch = 0;
for(int code=0;code<=CHAR_MAX;code++)
{
ch = (char)code;
if(isprint(ch))
{
if(++count % 32 == 0)
printf("\n");
printf("%c",ch);
}
}
printf("\n");
count = 0;
wchar_t wch = 0;
for(wchar_t wch=L'a';wch<=L'z';wch++)
{
if(count++ % 3 == 0)
wprintf(L"\n");
wprintf(L" %lc %#x %lc %#x",wch,(long)wch,towupper(wch),(long)towupper(wch));
}
printf("\n");
system("pause");
return 0;
}
23.gets puts getchar putchar24.double->%lf float->%f
25.单向链表
25.单向链表
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
struct linkList
{
int num;
struct linkList* next;
};
struct linkList* current=NULL;
struct linkList* previous=NULL;
struct linkList* first=NULL;
char input = 0;
while(1)
{
fflush(stdin);
puts("是否输入:(y/n)");
scanf("%c",&input);
if(tolower(input)=='n')
break;
current = (struct linkList*)malloc(sizeof(struct linkList));
if(first==NULL)
first = current;
if(previous!=NULL)
previous->next = current;
puts("输入链表值:");
scanf("%d",¤t->num);
current->next = NULL;
previous = current;
}
current = first;
while(current!=NULL)
{
printf("当前链表值为:%d\n",current->num);
previous = current;
current = current->next;
free(previous);
}
system("pause");
return 0;
}
26.二叉树#include <stdio.h>
#include <stdlib.h>
struct Node
{
int value;
int count;
struct Node* pLeft;
struct Node* pRight;
};
struct Node* createNode(int value);
void addNode(struct Node* pNode,int value);
void listNode(struct Node* pNode);
int main()
{
struct Node* root = createNode(100);
addNode(root,90);
addNode(root,95);
listNode(root);
system("pause");
return 0;
}
struct Node* createNode(int value)
{
struct Node* pNode = (struct Node*)malloc(sizeof(struct Node));
pNode->value = value;
pNode->count = 1;
pNode->pLeft = NULL;
pNode->pRight = NULL;
return pNode;
}
void addNode(struct Node* pNode,int value)
{
//struct Node* pNode = (struct Node*)malloc(sizeof(struct Node));
if(value==pNode->value)
{
pNode->count += 1;
return;
}
if(value>pNode->value)
{
if(pNode->pRight==NULL)
{
pNode->pRight = createNode(value);
return;
}
else
{
return addNode(pNode->pRight,value);
}
}
else
{
if(pNode->pLeft==NULL)
{
pNode->pLeft = createNode(value);
return;
}
else
{
return addNode(pNode->pLeft,value);
}
}
}
void listNode(struct Node* pNode)
{
if(pNode->pRight!=NULL)
listNode(pNode->pRight);
printf("value=%d\n",pNode->value);
if(pNode->pLeft!=NULL)
listNode(pNode->pLeft);
}
27.typedef用法==> typedef struct pts* pPoint;
==> typedef int(*function_pointer)(int,int);
==> typedef struct pts Point;
==> typedef struct pts{int x;int y;int z;}Point;
28.文件操作
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* pfile = fopen("d:\\text2.txt","w");
if(!pfile)
{
printf("wrong...\n");
system("pause");
return 1;
}
fclose(pfile);
int result = rename("d:\\text1.txt","d:\\text2.txt");
remove("d:\\text2.txt");
system("pause");
return 0;
}
29. fputc(mystr[i],pfile); while((c = fgetc(pfile)) != EOF)30. sprintf(newstr,"%d.%s",count,mystr);
31. rewind(pfile);
32. //fprintf(stderr,"%s打开出现错误\n",path); perror(path);
33. feof(pfile)
34. size_t count = fwrite(a,sizeof(a[0]),num_a,pfile); count = fread(b,sizeof(b[0]),num_a,pfile);
35. remove 成功则返回0,失败则返回-1,错误原因存于errno
36. long ftell(FILE *pfile); fpos_t here = 0; fgetpos(pfile,&here);
37. int fseek(FILE *pfile ,long offset, int origin); //SEEK_SET 文件开头
38. int fsetpos(FILE *pfile,fpos_t *position);
39. 临时文件 FILE* pfile = tmpfile(); FILE *pfile = tmpnam(NULL);
40.
FILE *pfile = NULL;
char name[30];
int name_len = 0;
char tel[12];
int tel_len = 0;
char answer = 0;
pfile = fopen("d:\\data.bin","ab+");
if(pfile==NULL)
exit(1);
//输入信息
do
{
fflush(stdin);
puts("输入姓名:");
gets(name);
puts("输入电话:");
gets(tel);
name_len = strlen(name);
tel_len = strlen(tel);
fwrite(&name_len,sizeof(int),1,pfile);
fwrite(name,sizeof(char),(name_len+1),pfile);
fwrite(&tel_len,sizeof(int),1,pfile);
fwrite(tel,sizeof(char),(tel_len+1),pfile);
puts("是否继续输入:");
answer = getchar();
}while(answer=='y');
fclose(pfile);
//读取信息
pfile = fopen("d:\\data.bin","rb");
if(pfile==NULL)
exit(1);
while(1)
{
fread(&name_len,sizeof(int),1,pfile);
if(feof(pfile))
break;
fread(name,sizeof(char),(name_len+1),pfile);
fread(&tel_len,sizeof(int),1,pfile);
fread(tel,sizeof(char),(tel_len+1),pfile);
printf("姓名:%-10s 电话:%s\n",name,tel);
}
fclose(pfile);
41. #ifdef #ifndef #elif42. #include <time.h> srand((unsigned int)time(NULL)); int k=x+rand()%(y-x+1);
//生成[x,y]范围整数
43. #define
log(var) printf("log: %s=%d\n",#var,var)
44. #include
<assert.h> //断言,参数为int,值为0或false时,程序中断
45.
cup_time = ((double)(end-start))/CLOCKS_PER_SEC;
46. 自定义delay函数
void delay(int sec)
{
clock_t start_time;
start_time = clock();
while((clock()-start_time)<(CLOCKS_PER_SEC/1000*sec)){}
}
47. 打印时间 time_t c = time(NULL);printf("%s\n",ctime(&c));48. 获取时间信息
time_t c = time(NULL);
struct tm* time_data = localtime(&c);
printf("%d\n",time_data->tm_mon);
struct tm* time_data = localtime(&c);
printf("%d\n",time_data->tm_mon);
49. 二进制输出的一些方法
void myfunc(int a)
{
int arr[100];
itoa(a,arr,2);
printf("a=%d a=%s\n",a,arr);
}
char *change(int val, int base, char *retbuf )
{
static char *str = "0123456789ABCDEF";
char *p;
char buf[15];
p = buf+14;
*p = 0;
do { *--p = str[val % base]; } while( val /= base );
strcpy(retbuf,p);
return retbuf;
}
50. 格式化输出for(int i=0;i<100;i++)
printf("%2d%c",i,(i%10==9||i==99)?'\n':' ');
51. double myfunc(char s[])
{
int index = 0;
int sign = 1;
double result = 0.0;
double dot = 1.0;
int state = 0;
while(s[index]!='\0')
{
if(state==1&&s[index]==' ')
break;
while(s[index]==' ')
index++;
if(s[index]=='+'||s[index]=='-')
{
sign = (s[index]=='+')?1:-1;
index++;
state = 1;
}
while(s[index]>='0'&&s[index]<='9')
{
state = 1;
result = result*10 + s[index]-'0';
index++;
}
if(s[index]=='.')
{
index++;
state = 1;
}
while(s[index]>='0'&&s[index]<='9')
{
dot *= 0.1;
result = result + (s[index++]-'0')*dot;
}
}
return sign*result;
}
52.