07 2019 档案
摘要:history 查看历史命令 ctrl+p 向上翻历史纪录 ctrl+n 向下翻历史纪录 ctrl+b 光标向左移动 ctrl+f 光标向右移动 ctrl+a 光标移动到行首 ctrl+e 光标移动到行尾 ctrl+h 删除光标前一个 ctrl+d 删除光标后一个 ctrl+u 删除光标前所有 ct
阅读全文
摘要:C++继承 面向对象程序设计中最重要的一个概念就是继承,继承允许我们以及另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易,这样做也可以达到重用代码功能和提高执行时间的效果。 当创建一个类时,不需要重新编写新的数据成员和成员函数,只需要指定新建的类继承一个已有的类的成员即可,这个已有的类被
阅读全文
摘要:运行结果: ubuntu1604@ubuntu:~/wangqinghe/C/20190730$ gcc reverse.c -o reverse ubuntu1604@ubuntu:~/wangqinghe/C/20190730$ ./reverse 0 9 8 7 6 5 4 3 2 1 0 r
阅读全文
摘要:#include #include struct list { int data; struct list *next; }; //建立链表节点 struct list *create_list() { return calloc(sizeof(struct list),1); } //往链表的第n个节点插入新节点 struct list *insert_list(...
阅读全文
摘要://前提是查找的数组已是有序 #include //非递归 int binary(int *arr,int low,int high,int key) { while(low arr[mid]) { low = mid + 1; } else { high = mid ...
阅读全文
摘要:#include void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; } int MinKey(int *arr,int low,int high) { int min = low; int key = arr[low]; int i; for(i = low + ...
阅读全文
摘要:#include void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; } void bubble(int array[],int n) { int i; int j; for(i = 0; i array[j]) swap(&array[j...
阅读全文
摘要:有时候我们需要用到线程同步来控制线程运行顺序。 exbot@ubuntu:~/wangqinghe/thread/20190729$ ./synchro 2 thread0 1 thread0 2 thread1 1 thread1 2 thread2 1 thread2 2 thread3 1 t
阅读全文
摘要:int pthread_cancel(pthread_t th); 该函数运行一个线程取消指定的另一个线程th 函数成功,返回0,否则,返回非0; 函数运行结果: exbot@ubuntu:~/wangqinghe/thread/20190729$ ./cancel thread_create su
阅读全文
摘要:int pthread_detach(pthread_t th); pthread_detach函数使线程处于被分离状态。 如果不等待一个线程,同时对线程的返回值不感兴趣,可以设置这个线程为分离状态,让系统在线程退出的时候自动回收它所占用的资源。 一个线程不能自己调用pthread_detach改变
阅读全文
摘要:进程终止时exit()函数,那么线程终止的是什么呢? 线程终止的三种情况: 运行结果: exbot@ubuntu:~/wangqinghe/thread/20190729$ gcc exit.c -o exit -lpthread exbot@ubuntu:~/wangqinghe/thread/2
阅读全文
摘要:有时候在一个线程中创建了另外一个线程,主线程要等到创建的线程返回了,获取该线程的返回值后才退出,这个时候就需要把线程挂起。 int pthread_join(pthread_t th,void ** thr_return); pthread_join函数用去挂起当前线程,直至th指定的线程终止为止。
阅读全文
摘要:strerror() 包含在string.h的函数中 EXIT_SUCCESS 定义包含在stdlib.h的函数中 运行结果: exbot@ubuntu:~/wangqinghe/thread/20190729$ ./thread thread_create success func run...
阅读全文
摘要:运行结果: ubuntu1604@ubuntu:~/wangqinghe/C/20190728$ ./sort name = wang,age = 23 name = qing,age = 56 name = he,age = 58 name = wa,age = 13 name = heq,age
阅读全文
摘要:运行结果: ubuntu1604@ubuntu:~/wangqinghe/C/20190728$ gedit remove.c b.txt ^C ubuntu1604@ubuntu:~/wangqinghe/C/20190728$ gcc remove.c -o remove ubuntu1604@
阅读全文
摘要:C语言所有文件操作都是先把数据写进缓存区再一次性写入磁盘文件中。 flush的功能强制随写随存。 好处是不会因为停电或者电脑死机等故障导致缓冲区内容丢失。 坏处是硬盘读写次数增加,导致程序效率低下同时硬盘寿命变短。
阅读全文
摘要:ftell函数用于得到文件位置指针当前位置相对于文件首的偏移字节数,在随机方式存储文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。 运行结果: ubuntu1604@ubuntu:~/wangqinghe/C/20190727$ ./ftell buf = d ftell = 4
阅读全文
摘要:fseek函数: int fseek(FILE *_FILE, long _Offset, int _Origin); 函数设置文件指针stream的位置,如果执行成功,stream将指向以fromwhere为基准,偏移量offset(指针偏移量)个字节的位置,函数返回0。如果执行失败则不改变str
阅读全文
摘要:一个应用程序可以启动若干个线程; 线程,是程序执行的最小单位; 一般一个最简单的程序最少有一个线程,就是程序本身,也是主函数; 一个线程阻塞不会影响另一个线程; 多线程的进程可以尽可能多的利用系统CPU资源。 Attention:编译时需要加上-lpthread来连接libpthread.so动态库
阅读全文
摘要:read运行结果读取的数据不对。 以下程序读取成功:
阅读全文
摘要:运行结果: exbot@ubuntu:~/wangqinghe/thread/thread_0530$ ./threadcreate thread 1 successcreate thread 2 successthread2:0thread2:1thread2:2thread2:3thread2:
阅读全文
摘要:文本文件,每行代表一个整数,范围在0~512之间; 要求:对文件排序,不使用堆空间,只使用栈空间。 用srand()和rand()函数生成一定量的随机数 然后排序:
阅读全文
摘要:将结构体内容写入到文件中 写入到文件中,文件大小是104b,(struct类的大小),多余的未填充的字段会是乱码。 会将整个结构大小和内容写入。 运行结果: exbot@ubuntu:~/wangqinghe/C/20190723$ gcc readWrite.c -o readWrite exbo
阅读全文
摘要:stat函数可以获取文件信息 可以使用时间相关函数来计算一下程序运行的时间(对于大文件复制有很好的效果)
阅读全文
摘要:void writeLog(char *filename,char *buf) { printf("write log"); FILE *fp; fp = fopen(filename,"at+"); while(NULL != fp) { char now[32]; memset(now,0,sizeof(now)); ...
阅读全文
摘要:1.用strcat拼接函数可以实现 2.用sprintf函数也可以实现 sprintf函数如果写入成功会返回写入字符的个数,第一个参数表示从字符串的第几位开始写入
阅读全文
摘要:#include #include #include //typedef unsigned int size_t; int main() { FILE *p = fopen("./a.txt","r"); FILE *p1 = fopen("./b.txt","w"); char buf[10] = {0}; while(!feof(p)) { ...
阅读全文
摘要:fscanf()函数和scanf函数用法一样。fscanf是从一个文件中读取字符串,scanf是从键盘读取字符串。(遇到空格就停止) fread()函数和fwrite()函数:操作文本文件和二进制文件 fopen()函数只能读文本文件 fread()函数有返回值,返回的是size_t类型,unsig
阅读全文
摘要:计算字符串“25 + 32 = ” 计算文本文件中的计算: 运行结果; 分析:最后面多一个0是因为用feof判断是否到达文件结尾会多循环一次。 strncpy()函数:将指定长度的字符串复制到字符数组中 语法: char *strncpy(char *destinin, char *source,
阅读全文
摘要:文件文本排序: 数组冒泡: 文件数据排序 如果文件数据过大,就不能在栈中建立一个数组,考虑使用堆
阅读全文
摘要:fopen()函数参数: r 只读的方式打开文件。 打开成功返回文件指针, 打开失败返回NULL r+ 以读写方式打开文件。 文件必须存在 rb+ 以二进制模式读写文件,文件必须存在 rw+ 读写一个二进制文件,允许读和写 w 打开只写文件,若文件存在,则文件长度清零,若文件不存在,则创建该文件 w
阅读全文
摘要:报错: exbot@ubuntu:~/wangqinghe/ReadConfig$ make gcc readConfig.c -c readConfig.o gcc: error: readConfig.o: 没有那个文件或目录 make: *** [readConfig.o] 错误 1 改正:
阅读全文
摘要:缺陷:scanf输入会将空格自动隔开下一行。 gcc已经禁止使用gets函数了。 接受带空格的字符出的方法,vs中可以使用gets_s函数, linux环境下只能使用char *fgets(char *buf, int bufsize, FILE *stream); fget(str,maxn,st
阅读全文
摘要:结构体作为函数参数: 结构体作为函数参数时,实参传入地址,形参用指针接收。 运行结果; exbot@ubuntu:~/wangqinghe/C/20190714$ ./struct2 name = mike,age = 100 如果函数参数的结构特别大,比如name[10000],会导致入栈速度变得
阅读全文
摘要:结构体中带有指针的情况 运行结果: exbot@ubuntu:~/wangqinghe/C/20190714$ gcc struct.c -o struct exbot@ubuntu:~/wangqinghe/C/20190714$ ./struct name = tom, age = 20 如果修
阅读全文
摘要:函数声明:char *fgets(char *str,int n,FILE *stream) 函数介绍:从指定的stream流中读取一行,并把它存储在str所指向的字符串中。当读取到(n-1)个字符时,获取读取到换行符时,或者到达文件末尾时,他会停止。具体视情况而定。 函数参数: l str –-
阅读全文
摘要:运行结果:4 运行结果:8 运行结果:8 分析:以结构体中最大的数据类型的字节为标准,随后的基础数据类型都会跟随它对齐 运行结果:12 a b c d e 13 14 15 16 32位计算机(主流): long 8 int 4 short 2 char 1 运行结果:24 a b c d e
阅读全文
摘要:通过函数给实参分配内存,可以通过二级指针实现 如果出现以下错误: test.c:6:7: warning: incompatible implicit declaration of built-in function ‘malloc’ [enabled by default] *p = malloc
阅读全文
摘要:在linux环境下写c代码时会尝试各种方法或调整路径,需要用到#if 有时候会调整代码,但是又不是最终版本的更换某些值,就需要注释掉,或者需要频繁的来回更换某个变量值测试 就可以用这种方法,只需要更改 if 后面跟的0,1就能达到变换变量值的效果
阅读全文
摘要:设置两个数值来表示最大数和第二大数,在循环比较赋值即可 测试代码: 运行结果: smax = 4
阅读全文
摘要:将生产的.o文件放进指定的文件中(先创建该文件夹) 将生产的最终可执行文件放进指定的文件夹中(可以不先创建文件夹)
阅读全文
摘要:函数声明:int vfprintf(FILE *stream, const char *format, va_list arg) 函数参数: stream—这是指向了FILE对象的指针,该FILE对象标识了流。 format—c语言字符串,包含了要被写入到流stream中的文本。它可以包含嵌入的fo
阅读全文
摘要:实现了传输进去的字符串所在的文档,函数和行数显示功能。 实现了将传入的可变参数打印到日志功能。 输出结果: exbot@ubuntu:~/wangqinghe/C/20190703$ gcc log.c -o log exbot@ubuntu:~/wangqinghe/C/20190703$ ./l
阅读全文
摘要:简单日志输出: Attention: fwrite(szStr,256,1,fp); // fwrite(szStr,strlen(szStr),1,fp); 日志会出现乱码的情况 fopen()函数: 函数声明:include<stdio.h> 函数原型:FILE *fopen(const cha
阅读全文
摘要:Linux C关于输出函数的定义: va_list ap; //首先定义了一个va_list类型的变量 void va_start(va_list ap, last); //va_start的第一个参数va_list变量,第二个参数为函数的最后一个固定参数 void va_end(va_list a
阅读全文
摘要:Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each input file contains one test case. For each case, th
阅读全文
摘要:函数样例: 运行结果: exbot@ubuntu:~/wangqinghe/DeBug/20190702$ gcc sum.c -o sum exbot@ubuntu:~/wangqinghe/DeBug/20190702$ ./sum 10 20 30 0 argument is 10.000 s
阅读全文
摘要:一个函数可以接受不定数的参数个数,这就是可变参数函数,比较常见的比如printf(),scanf(); 变量参数函数的简单实现: 结果如下: exbot@ubuntu:~/wangqinghe/DeBug/20190702$ ./VA num:5, vl:1020625376 in for resu
阅读全文