网站上设置返回首页的超链接咋做的,北航做网站公司,电商设计师的工作内容,公众号官方Linux 标准 I/O#xff08;Standard I/O#xff09;库提供了一组函数#xff0c;用于进行高级别的文件输入和输出操作。它建立在底层文件 I/O 系统调用之上#xff0c;为开发者提供了更方便、更高级别的文件处理方式。以下是一些常用的 Linux 标准 I/O 库函数#xff1a; …Linux 标准 I/OStandard I/O库提供了一组函数用于进行高级别的文件输入和输出操作。它建立在底层文件 I/O 系统调用之上为开发者提供了更方便、更高级别的文件处理方式。以下是一些常用的 Linux 标准 I/O 库函数
1. 文件指针
标准 I/O 使用 FILE 结构表示文件流通过文件指针FILE*进行操作。FILE 结构包含了文件的缓冲区、文件描述符、文件位置指示器等信息。
2. 文件打开和关闭 FILE* fopen(const char* filename, const char* mode); 打开文件并返回一个文件指针。filename 是文件名。mode 指定打开文件的模式例如“r” - 只读“w” - 只写“a” - 追加“r” - 读写“w” - 读写“a” - 读写追加等。 int fclose(FILE* stream); 关闭文件流释放相关资源。
#include stdio.hint main() {// 打开文件FILE* file fopen(example.txt, r);if (file ! NULL) {// 文件操作...// 关闭文件fclose(file);} else {perror(Error opening file);}return 0;
}3. 文件读写 size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream); 从文件读取数据到缓冲区。ptr 是数据缓冲区的指针。size 是每个数据项的大小。nmemb 是要读取的数据项数量。stream 是文件指针。 size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream); 将数据从缓冲区写入文件。ptr 是数据缓冲区的指针。size 是每个数据项的大小。nmemb 是要写入的数据项数量。stream 是文件指针。
#include stdio.hint main() {FILE* file fopen(example.txt, w);if (file ! NULL) {// 写入数据const char* data Hello, Standard I/O!;fwrite(data, sizeof(char), strlen(data), file);// 关闭文件fclose(file);} else {perror(Error opening file);}return 0;
}4. 标准输入输出 int fprintf(FILE* stream, const char* format, ...); 将格式化的数据写入文件。 int fscanf(FILE* stream, const char* format, ...); 从文件中读取格式化的数据。 int printf(const char* format, ...); 将格式化的数据写入标准输出。 int scanf(const char* format, ...); 从标准输入读取格式化的数据。
#include stdio.hint main() {FILE* file fopen(example.txt, w);if (file ! NULL) {// 将格式化的数据写入文件fprintf(file, The answer is: %d\n, 42);// 关闭文件fclose(file);} else {perror(Error opening file);}return 0;
}5. 标准错误输出
int perror(const char* s); 输出一个错误消息。
#include stdio.hint main() {FILE* file fopen(nonexistent_file.txt, r);if (file NULL) {// 输出错误消息perror(Error opening file);}return 0;
}6. 标准输入输出重定向 int fflush(FILE* stream); 刷新缓冲区。 int setvbuf(FILE* stream, char* buffer, int mode, size_t size); 设置文件流的缓冲区。 int fseek(FILE* stream, long offset, int whence); 移动文件位置指示器。
#include stdio.hint main() {FILE* file fopen(example.txt, w);if (file ! NULL) {// 写入数据fprintf(file, Hello, Standard I/O!);// 刷新缓冲区fflush(file);// 移动文件位置指示器fseek(file, 0, SEEK_SET);// 关闭文件fclose(file);} else {perror(Error opening file);}return 0;
}7. 标准输入输出缓冲
标准 I/O 库使用缓冲区来提高性能。默认情况下标准输入stdin和标准输出stdout是行缓冲的而标准错误输出stderr是无缓冲的。
行缓冲当遇到换行符 \n 时缓冲区会被刷新。全缓冲当缓冲区满时或者使用 fflush 函数时缓冲区会被刷新。
#include stdio.hint main() {// 默认为行缓冲当遇到换行符时缓冲区被刷新printf(Hello, ); // 不会立即输出// 刷新缓冲区fflush(stdout); // 输出 Hello, // 全缓冲缓冲区满时被刷新printf(World!); // 不会立即输出// 刷新缓冲区fflush(stdout); // 输出 World!return 0;
}8. 标准输入输出重定向
标准输入输出重定向允许程序从不同的源读取输入或将输出发送到不同的目标。这在命令行中特别有用。 标准输入重定向./program input.txt 程序从 input.txt 中读取输入。 标准输出重定向./program output.txt 程序将输出写入到 output.txt。
#include stdio.hint main() {// 从标准输入读取数据int number;scanf(%d, number);printf(You entered: %d\n, number);// 将输出重定向到文件freopen(output.txt, w, stdout);printf(This will be written to output.txt\n);return 0;
}9. 标准输入输出流的复制
通过 dup 或 dup2 函数可以复制文件描述符实现标准输入输出流的重定向。 int dup(int oldfd); 复制文件描述符返回新的文件描述符。 int dup2(int oldfd, int newfd); 复制文件描述符到指定的文件描述符如果指定的文件描述符已经打开则关闭它。
#include stdio.h
#include unistd.hint main() {// 复制标准输出流到文件描述符 3int newfd dup(STDOUT_FILENO);// 输出到标准输出和新的文件描述符printf(Hello, Standard Output!\n);dprintf(newfd, Hello, New File Descriptor!\n);// 关闭新的文件描述符close(newfd);return 0;
}10. 标准错误输出
标准错误输出流 stderr 通常用于输出程序运行时的错误消息。
#include stdio.hint main() {fprintf(stderr, This is an error message.\n);perror(An error occurred);return 0;
}以上是 Linux 标准 I/O 库的一些高级特性包括缓冲机制、输入输出重定向和文件描述符的复制。这些特性使得标准 I/O 库更加灵活适用于各种输入输出场景。 点击最下方名片免费领取Linux硬核学习资料