fseek可以移动FILE结构体中指向文件位置的指针指向,其第三个参数可以让我们非常灵活的将指针移动要任意自己需要的位置。而ftell则可以获取当前指针位置,返回一个long大小的数值,我们可以使用fseek将指向文件的指针移动到文件末尾,然后使用ftell取当前指针的位置,就可以得到一个文件的大小。具体实现如下:

继续阅读

通过Windows的CTRL+C、CTRL+V可以非常方便的复制文件,实际内部也一样是通过读写文件来完成的,通过Windows的命令行我们也可以使用copy.exe的相关命令来复制文件。本文就模仿copy.exe程序制作一个文件复制的程序。具体代码如下:

继续阅读

fread、fwrite两个函数一般用于操作二进制文件,不适用处理文本文件,当然如果你非要用这两个函数来处理也没什么问题,只不过会相对麻烦一些,比如它不会给你读取出来的字符串末尾添加\0(fgets会在传入的buf末尾增加\0),也不会有什么结束标记判断。所以如果你如果用fread处理文本文件是非常苦恼的一件事情,一不小心就可能出错。继续阅读

上一篇文章中介绍了fgets函数,可以一次获取一行数据到一个buffer中。对应也有一个函数是fputs,可以一次将一行数据写入到一个文件中,同样,在写入之前要以w方式打开被写入的文件,具体代码如下:

继续阅读

上一篇文章我们介绍过一次性读取一个字符,这样读取更加精确,但有不同的需求,比如需要一次读取一行或一段。本文将介绍如何一次读取一行内容,提供了两个函数,并分析了两个函数的区别。继续阅读

在C语言中,文件读写方式有很多种,比如一次读一个字符、一次读一行、一次读指定大小的内容等等方式,我们会依次介绍以上几种方式,本文开头,首先介绍一次读写一个字符的方法,其中需要使用到的函数为fgetc(读)、fputc(写)。期间的操作都需要文件句柄,我们也准备了一些文件做示例:继续阅读

在编写代码的过程中,往往我们会用到一个数的二进制形式来对比分析,但C语言并没有什么库函数提供了这样的功能,虽然我们可以通过一些强大的编译器(如VisualStudio)在调试的过程中查看内存中存放的数据,但始终没有直观的打印出来方便的多。那么需求有了,如何实现呢?请看代码:

继续阅读

二分查找的前提是数据一定要有序,否则一切皆为空谈。通过有序的一段数据使用二分查找较常规遍历查找算法速度要快一些。其中二分查找发有两种实现,一种为常规while循环,另外一种为递归。具体的实现步骤如下:继续阅读

快速排序是在数据源中抽取一份数据作为样本,与所有需要排列的数据进行对比,根据需要把比样本小的数据放置到数据源的左侧位置,比样本大的数据放置到数据源的右侧位置。以此来对数据进行排序。具体实现如下:

继续阅读