阿帕奇网站搭建,中国域名后缀是什么,网址推广工具有哪些,婚庆公司加盟目录
一、如何在Linux下做开发
1.vi编辑器
2.gcc编译工具
3.常用指令
二、文件打开及创建
三、写入文件
四、读取文件
五、文件“光标”位置 一、如何在Linux下做开发
所谓文件编程#xff0c;就是对文件进行操作#xff0c;Linux的文件和Windows系统的文件大差不差…目录
一、如何在Linux下做开发
1.vi编辑器
2.gcc编译工具
3.常用指令
二、文件打开及创建
三、写入文件
四、读取文件
五、文件“光标”位置 一、如何在Linux下做开发
所谓文件编程就是对文件进行操作Linux的文件和Windows系统的文件大差不差只不过Linux的所有文件都是在同一个根目录下例如/home/book/Linux/file1表示根目录下的home文件夹里的book文件夹里的Linux文件夹里的file1文件。在此之前我们先学习几个常用的指令。 1.vi编辑器 vi编辑器是所有Unix及Linux系统下标准的编辑器它的强大不逊色于任何最新的文本编辑器这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本vi编辑器是完全相同的因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器。 在终端输入“vi”“文件名” 就可以进入文本编辑页面进入后默认是命令行模式按“i”进入输入模式左下角会提示“--INSERT--”编辑完后按“esc”返回命令行模式输入“”“wq”即可保存并退出编辑完的文件。 2.gcc编译工具 GCC英文全拼GNU Compiler Collection是 GNU 工具链的主要组成部分是一套以 GPL 和 LGPL 许可证发布的程序语言编译器自由软件由 Richard Stallman 于 1985 年开始开发。 GCC 原名为 GNU C语言编译器因为它原本只能处理 C 语言但如今的 GCC 不仅可以编译 C、C 和 Objective-C还可以通过不同的前端模块支持各种语言包括 Java、Fortran、Ada、Pascal、Go 和 D 语言等等。 GCC支持多种硬件开发平台还能进行跨平台交叉编译。此外GCC是按模块化设计的可以加入新语言和新CPU架构的支持。 看上图a.c和a都是用户自己取的名字-o表示直接生成可执行文件 但我在学习的过程中看到了直接输入“gcc a.c”的指令这时默认生成的可执行文件的名字为a.out。
3.常用指令 二、文件打开及创建
函数
/** 使用open函数必须包含以下头文件*/
#include sys/types.h
#include sys/stat.h
#include fcntl.hint open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
参数说明
open函数会返回一个非负的整数,我们称之为文件描述符,后续我们对文件进行写入等操作都需要通过这个返回值来操作。 文件打开失败会返回-1。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
示例
使用gcc编译工具编译.c文件后运行预期在终端里看到fd的值。这里open的第一个参数可写成./file1表示当前文件夹下的file1文件但需要注意当前所处文件夹下是否有file1文件
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
如果要打开的文件不存在则需要在open函数的第二个参数“|O_CREAT”用或操作并且要输入第三个参数表示创建时的权限。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -示例
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
“0600”表示创建的file1文件是个可读可写的文件其他权限我暂时还不清楚。 三、写入文件
函数
/** 调用write函数必须包含以下头文件*/
#include unistd.hssize_t write(int fd, const void *buf, size_t count);
第一个参数就是我们之前提到的文件描述符这个函数目的是将指针指向的内存里的count字节的数据写入文件描述符为fd的文件里。返回值是你写入的字节数出现错误返回-1。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -示例 注意write函数的第三个参数计算字节长度时不能用sizeof在Linux中sizeof会计算地址的大小Linux地址长度为8个字节。最后使用close函数关闭文件传入文件描述符即可。 四、读取文件
函数
//使用read函数需包含以下头文件
#include unistd.hssize_t read(int fd, void *buf, size_t count);
读取成功会返回读取到的字节数失败返回-1。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -示例
使用write函数时得到它的返回值直接定义char *ReadBuf是个野指针所以用malloc函数给ReadBuf分配内存该指针是char型用sizeof函数计算大小有n_write个所以*n_write。read函数也有它的返回值打印到终端时预期打印“read 12context:Hello World!”。结果
发现读到了0个字节内容也是空的这里就要提到文件光标了我们写入了内容后光标是在我们写入内容的后面这时候去读文件自然是从光标位置往后读所以读到是空。
解决办法 1.关闭文件后再打开光标会从头开始最原始的方法
在写入内容后关闭再打开即可。 2.移动文件光标位置 (见下方) 五、文件“光标”位置
函数
#include sys/types.h
#include unistd.hoff_t lseek(int fd, off_t offset, int whence);
函数作用将文件读写指针相对whence移动offset个字节第三个参数可以用函数提供的宏 ·SEEK_SET 光标在文件头部 ·SEEK_CUR 光标在当前位置 ·SEEK_END 光标在文件尾部
offset表示与whence的偏移量正数表示向后偏。 拿上面读取文件的问题来举例只需要在读文件之前加上这么一行代码
lseek(fd,0,SEEK_SET);
就能完美解决问题。
lseek函数的另一个用法
函数的返回值是光标位置相对文件头部的偏移值所以我们可以用这个函数来计算文件的大小。
示例
int filesize lseek(fd,0,SEEK_END); 补充
创建文件还可以用creat函数