龙空技术网

Linux C程序设计 速成版 文件操作篇

极客代码 108

前言:

眼前同学们对“c程序设计第五版txt”大概比较关心,姐妹们都想要分析一些“c程序设计第五版txt”的相关文章。那么小编也在网摘上搜集了一些有关“c程序设计第五版txt””的相关内容,希望姐妹们能喜欢,兄弟们快快来了解一下吧!

系统调用标准I/O库格式化输入输出

"Linux一切皆文件"。

Linux系统下所有东西都是文件,无论是普通文件还是设备或者其他任何东西,在Linux系统下均是文件形式,且Linux系统下我们一般是不区分后缀的,一个.txt后缀文件可以作为可执行程序,一个.exe也可以作为普通文本,但是我们一般会约定一些通用的后缀,这样方便文件的归类,可以一眼看出,比如.sh后缀就表示脚本文件。

Linux下操作文件常用操作有:open、close、read、write、ioctl。

Linux系统我们操作文件一般可以使用系统调用或者标准I/O库。

1. 系统调用

1) 系统调用open

函数定义:#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>int open(const char *path, int oflags);int open(const char *path, int oflags, mode_t mode);参数说明:path:要打开的文件或者设备文件名字oflags:定义文件打开所采取的的动作,一般由必选的文件访问模式和其他可选模式结合。必选项(每次使用以下三个之一):O_RDONLY:以只读方式打开。O_WRONLY:以只写方式打开。O_RDWR:以读写方式打开。可选项(用"按位或"操作):O_APPEND:新写入文件数据追加在文件尾部。O_TRUNC:清除文件内容,重新写入新数据。O_CREAT:如果需要,就按参数mode给定的访问模式创建文件。O_EXCL:与O_CREAT一起使用,以确保调用者创建出文件。mode:在oflags带有O_CREAT标志时,需要指定文件权限,使用"按位或"操作。S_IRUSR:读权限,文件属主。S_IWUSR:写权限,文件属主。S_IXUSR:执行权限,文件属主。S_IRGRP:读权限,文件所属组。S_IWGRP:写权限,文件所属组。S_IXGRP:执行权限,文件所属组。S_IROTH:读权限,其他用户。S_IWOTH:写权限,其他用户。S_IXOTH:执行权限,其他用户。返回值说明:如果打开成功返回一个文件描述符,后续使用该文件描述符操作文件。如果打开失败会返回负值。

2) 系统调用close

函数定义:#include <unistd.h>int close(int fildes);参数说明:fildes:由open返回的文件描述符。返回值说明:操作成功返回0,操作失败返回-1。

3) 系统调用read

函数定义:#include <unistd.h>size_t read(int fildes, void *buf, size_t nbytes);参数说明:fildes:由open返回的文件描述符。buf:用于存放从文件中读取导到的数据。nbytes:要去读数据长度。返回值说明:返回实际读取数据长度,可能小于要读去数据长度。返回0表示已经读取到文件尾部。返回-1表示读取操作失败。

4) 系统调用write

函数定义:#include <unistd.h>#include <stdlib.h>size_t write(int fildes, const void *buf, size_t nbytes);参数说明:fildes:由open返回的文件描述符。buf:要写入文件的数据。nbytes:要写入文件的数据长度。返回值说明:返回实际成功写入文件数据长度,可能小于要写入文件的数据长度。返回0表示未写入任何数据。返回-1表示写操作失败。

5) 系统调用ioctl

函数定义:#include <unistd.h>size_t ioctl(int fildes, int cmd, ...);参数说明:fildes:由open返回的文件描述符。cmd:该参数根据特定设备驱动所作用不同和使用方式不同而变化。...:可能还有其他传递参数。返回值说明:根据具体设备驱动而定。

6) 标准I/O函数lseek

函数定义:#include <unistd.h>#include <sys/types.h>off_t fseek(int fildes, off_t offset, int whence);参数说明:fildes:由open返回的文件描述符。offset:偏移量。whence:偏移方式:SEEK_SET:offset是一个绝对位置。SEEK_CUR:offset是相对于当前位置的相对偏移。SEEK_END:offset是相对于文件尾的相对偏移。返回值说明:成功返回0,失败返回负值-1。
2. 标准I/O库

1) 标准I/O函数fopen

函数定义:#include <stdio.h>FILE *fopen(const char *filename, const char *mode);参数说明:filename:要打开的文件或者设备文件名。mode:文件打开方式,有如下方式:"r"或者"rb":以只读方式打开。"w"或者"wb":以写方式打开,并把文件长度截为零。"a"或者"ab":以写方式打开,新内容追加到文件尾部。"r+"或者"rb+"或者"r+b":以修改方式打开(读和写)。"w+"或者"wb+"或者"w+b":以修改方式打开,并把文件长度截为零。"a+"或者"ab+"或者"a+b":以修改方式打开,新内容追加到文件尾部。b标准这是一个二进制文件。返回值说明:成功返回非NULL指针,指针指向该文件。失败返回NULL。

2) 标准I/O函数fclose

函数定义:#include <stdio.h>int fclose(FILE *stream);参数说明:stream:由fopen返回的文件流指针。返回值说明:成功返回0,失败返回负值。

3) 标准I/O函数fread

函数定义:#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);参数说明:ptr:用于存放读取到的数据。size:读取的单个记录长度。nitems:读取记录数。stream:由fopen返回的文件流指针。返回值说明:返回成功读取到的记录数,并非字节数,可能会小于nitems。返回0或者小于nitems表示读取到文件尾。返回负值表示读取失败。

4) 标准I/O函数fwrite

函数定义:#include <stdio.h>size_t fread(const void *ptr, size_t size, size_t nitems, FILE *stream);参数说明:ptr:要写入文件数据。size:要写入的单个记录长度。nitems:要写入记录数。stream:由fopen返回的文件流指针。返回值说明:返回成功写入的记录数,并非字节数,可能会小于nitems。返回0或者小于nitems并不表示失败。返回负值表示写入失败。

5) 标准I/O函数fflush

把文件流里未写出的数据立刻写出。

函数定义:#include <stdio.h>int fflush(FILE *stream);参数说明:stream:由fopen返回的文件流指针。返回值说明:成功返回0,失败返回负值。

6) 标准I/O函数fseek

函数定义:#include <stdio.h>int fseek(FILE *stream, long int offset, int whence);参数说明:stream:由fopen返回的文件流指针。offset:偏移量。whence:偏移方式:SEEK_SET:offset是一个绝对位置。SEEK_CUR:offset是相对于当前位置的相对偏移。SEEK_END:offset是相对于文件尾的相对偏移。返回值说明:成功返回0,失败返回负值-1。

7) 标准I/O函数fgetc、getc、getchar、fputc、putc、putchar、fgets、gets

函数定义:#include <stdio.h>从文件流读取一个字符:int fgetc(FILE *stream);int getc(FILE *stream);int getchar();向文件流中写入一个字符:int fputc(int c, FILE *stream);int putc(int c, FILE *stream);int putchar(int c);从文件流中读取一个字符串:char *fgets(char *s, int n, FILE *stream);char *gets(char *s);
3. 格式化输入输出

1) 格式化输入函数scanf、fscanf、sscanf

函数定义:#include <stdio.h>int scanf(const char *format, ...);int fscanf(FILE *stream, const char *format, ...);int sscanf(const char *s, const char *format, ...);

2) 格式化输出函数printf、fprintf、sprintf

函数定义:#include <stdio.h>int printf(const char *format, ...);int fprintf(FILE *stream, const char *format, ...);int sprintf(char *s, const char *format, ...);

标签: #c程序设计第五版txt #linux c函数使用手册