C语言
wandandi
这个作者很懒,什么都没留下…
展开
-
C语言实现三子棋小游戏
三子棋,和五子棋的原理是一样的,当玩家或者是电脑的某一方先将各自的三个棋子下成一条线时谁就赢,游戏就会结束。游戏会有三种结果:电脑赢、玩家赢、平局。在代码中也需要这三种情况的判定。要写程序,就要清楚代码需要几个模块,可以分为以下几个:棋盘初始化电脑、玩家分别走棋输赢的判定先对头文件定义:头文件名 sanziqi.h #ifndef __sanziqi_h_...原创 2018-04-08 22:36:25 · 174 阅读 · 0 评论 -
二进制文件和文本文件的区别
二进制文件和文本文件的区别从文件编码的方式区别,文件可分为ASCII码文件和二进制码文件两种。ASCII码文件就是文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用来存放对应的ASCII码。如5432就是5432,占4个字节。由于是按照字符显示因此人可以看懂。二进制文件就是按照二进制的编码方式来存放文件的。例如数字5432就是 0101 0100 0011 0010,只占2个字节。...原创 2018-07-19 10:47:38 · 3066 阅读 · 1 评论 -
检测一个文件是否读到结尾
如何检测一个文件是否读到结尾feof函数可以检测当前文件流上的文件结束标志,判断是否读到了文件结尾。 int feof(FILE* stream); stream: 文件流指针 返回值: 返回1 检测到文件结束标示, 否则返回0EOF是 End Of File 的缩写,是C语言中标准库中定义的宏,定义为:#define EOF (-1)。 EOF的值为-1,是 int 类型数据,在...原创 2018-07-19 10:46:41 · 5548 阅读 · 0 评论 -
反转字符串
第一次看到这个题目,想到最简单、最直觉的解法就是:遍历字符串,将第一个字符和最后一个交换,第二个和倒数第二个交换,依次循环,即可,代码如下:char* reverseString(char* s) { int sz = strlen(s); int i = 0, j = sz - 1; char c; for(i,j; i<j; i++,j--) ...原创 2018-07-24 13:12:07 · 1574 阅读 · 0 评论 -
malloc函数的实现原理
malloc—动态内存分配malloc是我们在动态分配内存时常使用到的一个函数,malloc需要和free函数搭配使用。同时动态内存分配函数还有如calloc、realloc,同时动态分配的内存都在堆上。在MSDN中,malloc的作用是开辟一个内存块。函数原型 void *malloc(size_t size);size是开辟的内存所占多少字节。返回类型是void* 型(未确...原创 2018-07-12 19:26:32 · 1930 阅读 · 0 评论 -
C语言思维导图
学完C语言,感觉需要用图的方式总结出来,这篇思维导图主要包括了变量、数组、指针、函数等C语言里非常重要的组成部分。绘图软件:Xmind原创 2018-07-12 19:20:35 · 1813 阅读 · 0 评论 -
用C语言对一元二次方程求解
一元二次方程标准形式为 ax²+bx+c=0,且a≠0。在用C语言求值时,需要先判断给出的a、b、c三值是否满足一元二次方程,即判断a是否为0。当a=0时,输出(不是一元二次方程);当a≠0时,再利用b²-4ac判断值的个数:b²-4ac=0,方程有一个解;b²-4ac<0,方程无解;b²-4a>0,方程有两个不同的解。一元二次方程求解公式为:x=[-b±√(b²-4a...原创 2018-03-25 16:03:38 · 18987 阅读 · 2 评论 -
C语言自定义类型浅析
C语言的自定义类型有三种:结构体、枚举、联合一、结构体1.定义:结构体是一些称为成员变量的值的集合,结构里的每个成员可以是不同类型的变量。2.声明struct tag{ member-list; //成员列表}variable-list;例如描述一个学生:struct Stu{ char name[20];//名字 int age; c...原创 2018-05-13 20:34:16 · 405 阅读 · 0 评论 -
浅析函数指针及函数指针数组
一、函数指针一、定义 函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。二、声明方法void test(){ printf("hello world\n");}int main(){ printf("%p\n",test); printf(...原创 2018-04-26 16:19:55 · 120 阅读 · 0 评论 -
指针数组、数组指针分析
指针数组和数组指针一、什么是指针数组?首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“存放数组的指针”。二、什么是数组指针?首先它是一个指针,它指向一个数组。在32位系统下永远占4个字节,它指向的数组占多少字节由该数组决定,与该数组指针无关。它是“指向数组的指针”。三、指针数组和数组指针区分int *p1[10];int (*p2)[1...原创 2018-04-26 15:17:38 · 164 阅读 · 0 评论 -
可变参数列表源码的剖析
在某些情况下我们希望函数参数的个数可以根据实际需要来确定,所以C语言中就提供了一种长度不确定的参数,形如:“…”,通过将函数实现为可变参数的形式,可以使得函数可以接受1个以上的任意多个参数。典型的例子有printf()、scanf()函数等,下面就用printf函数的原型为例分析:int printf( const char *format [, argument]... );如上...原创 2018-04-19 16:53:18 · 109 阅读 · 1 评论 -
模拟实现strstr
strstr也是在字符串函数中比较常见的一个简单函数,其功能是查找一个字符串是不是另一个字符串的子串,我们可以也尝试模拟实现strstr。首先知道strstr的函数类型和参数char *strstr( const char *str1, const char *str2 );下来需要实现:1.检测字符串的安全性,即是否为空。 2.str1的字符逐个递增,并与str2整串进行...原创 2018-04-22 23:57:08 · 153 阅读 · 0 评论 -
C语言数组的介绍
所谓数组,就是用于储存多个相同类型数据的集合。这篇文章会从数组的创建和初始化、数组的使用、数组的指针访问等方面介绍一维数组和二维数组。一维数组 一维数组是最简单的数组,其逻辑结构是线性表。要使用一维数组,需经过定义、初始化和应用等过程。一、一维数组的创建和初始化 创建方式: type_t arr_name [const_n]; //...原创 2018-04-04 20:35:38 · 360 阅读 · 1 评论 -
C语言实现简易扫雷游戏
扫雷是大多数人初期接触电脑时玩过的游戏之一,一个简易的扫雷游戏用C语言实现也很简单,下来先介绍一下扫雷游戏主要需要实现的功能:1.第一次排雷,不炸死。 2.坐标周围没雷,可以实现展开。 3.第一次排雷之后遇到雷,炸死。 4.排完所有雷游戏胜利。 5.雷阵定义为一个ROW*COL的数组内含X个雷。先定义头文件:#ifndef __lei_h__#define __lei...原创 2018-04-10 21:05:57 · 347 阅读 · 0 评论 -
栈帧——函数的调用过程
> 什么是栈帧> 栈帧详解一、什么是栈帧 定义: 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。 每一次函数调用都是一个过程,这个过程要为函数开辟空间、分配地址,用于本次函数的调用中临时变量的保存和传递。这块空间我们就称为函数栈帧。二、栈帧详解以一个简单代码为例: 转到反汇编:1.main函数的栈帧分配...原创 2018-04-15 16:46:51 · 288 阅读 · 1 评论 -
文件操作的库函数
// 读文件--从文件中读count个size大的字段 返回实际读取的字节size_t fread(void *buffer, size_t size, size_t count, FILE *stream);// 写文件--向文件中写入count个size大的字段 返回实际写入的字节size_t fwrite(const void* buffer, size_t size, size...原创 2018-07-19 10:49:29 · 673 阅读 · 0 评论