随笔分类 -  C语言

文件操作相关的函数总结
摘要:文件操作<1>. 文件使用方式 含义 如果指定文件不存在“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错“w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件“a”(追加) 向文本文件尾添加数据 出错“rb”(只读) 为了输入数据,打开一个二进制文件 出错“wb”(只写) 为 阅读全文

posted @ 2019-03-20 16:03 The_Ocean 阅读(200) 评论(0) 推荐(0)

关于动态内存malloc和realloc
摘要:1.malloc 1.申请的内存长度可以运行时决定,单位是字节 2.申请的内存为连续的内存空间 3.返回的地址可以根据实际需要强转成对应的类型 4.动态申请内存的生命周期是整个程序,除非手动释放 此时就动态的申请了 100 * 4 长度的内存作为一个整形数组 int n = 100; int* p 阅读全文

posted @ 2019-03-17 21:38 The_Ocean 阅读(342) 评论(0) 推荐(0)

实现一个简易的通讯录
摘要:我们先可以简单的写出一个整体的大纲 //首先是创建一个联系人的信息,用一个结构体表示出来 typedef struct PersonInfo{ //一个联系人的信息 char name[1024]; char sex[1024]; char age[1024]; char phone[1024];  阅读全文

posted @ 2019-03-14 21:44 The_Ocean 阅读(873) 评论(0) 推荐(0)

qsort函数排序各种类型的数据。
摘要:qsort函数是库函数中的一员,我们先来看看官方文档是怎么写的: 其中qsort的参数void* base是传入一个数组,size_t num 为数组整体大小,size_t size 为单个元素的大小,int (*compar)(const void*,const void*)是需要使用者去完成的一 阅读全文

posted @ 2019-03-13 16:19 The_Ocean 阅读(6347) 评论(2) 推荐(2)

结构体总结
摘要:结构体:> 结构体类型创建结构体的声明: 在使用的时候必须要带struct Stu, 可以用typdef来重命名变量,方便使用特殊结构体:匿名结构体(基本上没有什么用) 机构体的自引用: 如果包含的成员是一个结构体的,那么在计算大小的时候就是一个无限的循环了 在这里就需要用指针的形式来进行自引用。 阅读全文

posted @ 2019-03-03 23:17 The_Ocean 阅读(355) 评论(0) 推荐(0)

冒泡排序及回调函数的使用
摘要:回调函数的特点:函数的调用者不知道具体的调用时机,由操作系统或代码框架来决定这样的好处就是可以将有些特定的逻辑单独提取出来,让调用者插入一些自定制的代码 我们先来写一个冒泡排序 1 #include<stdio.h> 2 void Swap(int* num1, int* num2) 3 { 4 i 阅读全文

posted @ 2019-03-03 17:42 The_Ocean 阅读(770) 评论(0) 推荐(0)

转移表(表驱动)
摘要:函数指针数组的使用:转移表(表驱动)->表驱动的名称出自《code complete》中文《代码大全》对于一个函数来说,条件或循环语句越多,函数就越复杂引入“圈复杂度”描述一个函数的复杂程度拆分函数是降低圈复杂度的有效方法之一,表驱动法就是其中之一 1 #include<stdio.h> 2 int 阅读全文

posted @ 2019-03-03 17:20 The_Ocean 阅读(673) 评论(0) 推荐(0)

模拟实现strncpy,strncat,strncmp
摘要:1.模拟实现strncpy <1.>strncpy相比于strcpy增加了size_t参数可以实现最多拷贝的字节数<2.>(size_t不可以超出拷贝存放的内存大小)来保证不会超出destanaton的内存,<3.>但是需要注意的是,如果你需要拷贝的长度小于源字符串长度,那么strncpy不会在末尾 阅读全文

posted @ 2019-03-02 09:19 The_Ocean 阅读(675) 评论(0) 推荐(0)

模拟实现memcpy 与 memmove
摘要:模拟实现memcpy 与 memmove 1.str系列的函数只能处理字符串——>必须带有'\0'2.memcpy内存处理函数:不涉及'\0',需要包含头文件 string.h3.source的内存不能超过destination的内存大小4.存在缓冲区的重合问题,要保证destination指向有效 阅读全文

posted @ 2019-03-01 12:19 The_Ocean 阅读(204) 评论(0) 推荐(0)

库函数中字符串函数的模拟实现
摘要:库函数的模拟实现1.实现strcpy 在使用assert来检查传参时,应该包含头文件#include<assert.h>注意事项:1.源字符串的大小一定要小于等于目标字符串的大小,否则会出现内容越界的问题2.在使用strcpy的时候也拷贝了'\0'3.在自己实现MyStrcpy时要注意判定检查传参是 阅读全文

posted @ 2019-03-01 12:12 The_Ocean 阅读(185) 评论(0) 推荐(0)

c语言指针总结
摘要:1.一级指针 :是一个变量,存放内存单元的地址。(存放在指针中的值都被当作地址来处理) int num=6; int* p = &num; printf("%p",p);//此时变量p里存放的是num的地址 2.指针的运算: 指针+-整数: int n = 10; char *pc = (char* 阅读全文

posted @ 2019-02-24 12:42 The_Ocean 阅读(586) 评论(0) 推荐(0)

判断一个字符串是否为另外一个字符串旋转之后的字符串。
摘要:例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC 阅读全文

posted @ 2019-02-16 14:12 The_Ocean 阅读(473) 评论(0) 推荐(0)

实现一个函数,可以左旋字符串中的k个字符
摘要:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB ABCD BACD BCAD BCDA CBDA CDBA CDAB 发现规律: 如果左旋一个字符则可以将第一个字符依次与后面的字符交换位置 如果左旋k个字符则可以将上面的操作进行k次 阅读全文

posted @ 2019-02-15 11:06 The_Ocean 阅读(339) 评论(0) 推荐(0)

写一函数,调整数组使奇数全部都位于偶数前面
摘要:调整数组使奇数全部都位于偶数前面。 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 阅读全文

posted @ 2019-02-14 22:58 The_Ocean 阅读(495) 评论(0) 推荐(0)

在杨氏矩阵中查找一个数字是否存在
摘要:杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 1 3 4 1 2 3 2 3 4 2 4 5 4 5 6 3 4 5 4 5 6 7 8 9 阅读全文

posted @ 2019-02-14 22:54 The_Ocean 阅读(256) 评论(0) 推荐(0)

改正字符数组中的内容
摘要:有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student". 要求: 不能使用库函数。 只能开辟有限个空间(空间个数和字符串的长度无关)。 student a am i i ma a tneduts i am a student 阅读全文

posted @ 2019-02-13 23:44 The_Ocean 阅读(196) 评论(0) 推荐(0)

找出一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的(使用位运算)
摘要:要求使用位运算 异或运算:相同为0,不同为1, a[]={1,2,5,6,8,8,1,2,6} 1^x=-x , 0^x=x b[]={1,1,2,2,5,6,6,8,8} 举例a[] 1: 0 0 0 1 2: 0 0 1 0 0011--> 1与2异或运算的结果 5: 0 1 0 1 0110- 阅读全文

posted @ 2019-02-11 22:31 The_Ocean 阅读(381) 评论(0) 推荐(0)

求两个数的平均值,不能只用(a+b)/2的方法
摘要:1 #include 2 3 int avg1(int a, int b) 4 { 5 //利用移位操作符 6 //右移移位相当于——>除以2 :(a+b)>>1 7 //考虑到溢出情况:1.可以增加字节的大小将4个字节变为8个字节 8 return a + ((b - a) >> 1); 9 } 10 11 int avg2(int ... 阅读全文

posted @ 2019-02-11 21:53 The_Ocean 阅读(619) 评论(0) 推荐(0)

写一个函数实现整数的二进制位模式从左到右翻转
摘要:如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 2550136832 思路:第1位逆转到了第32位->后整数的值为2^3 阅读全文

posted @ 2019-02-11 21:04 The_Ocean 阅读(424) 评论(0) 推荐(0)

两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
摘要:思路:利用&用算加右移的方法来提取二进制中的每一位数,然后进行比较,查看是否相同。 阅读全文

posted @ 2019-02-11 10:04 The_Ocean 阅读(419) 评论(0) 推荐(0)

导航