fopen()
: 打开文件并返回文件指针#include
int main() {
FILE *file = fopen("example.txt", "w"); // 以写入模式打开文件
if (file == NULL) {
perror("文件打开失败");
return 1;
}
// 使用文件指针进行写入操作
fclose(file); // 关闭文件
return 0;
}
fclose()
: 关闭文件#include
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
// 使用文件指针进行写入操作
fclose(file); // 关闭文件
return 0;
}
fread()
: 从文件中读取数据#include
int main() {
FILE *file = fopen("data.bin", "rb"); // 以二进制模式打开文件以供读取
if (file == NULL) {
perror("文件打开失败");
return 1;
}
char buffer[100];
size_t bytesRead = fread(buffer, sizeof(char), sizeof(buffer), file);
// 处理读取的数据
fclose(file);
return 0;
}
fwrite()
: 向文件写入数据#include
int main() {
FILE *file = fopen("output.txt", "w"); // 以写入模式打开文件
if (file == NULL) {
perror("文件打开失败");
return 1;
}
char data[] = "Hello, World!";
size_t bytesWritten = fwrite(data, sizeof(char), sizeof(data), file);
// 处理写入的数据
fclose(file);
return 0;
}
fgetc()
: 从文件中读取一个字符#include
int main() {
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
int ch = fgetc(file);
if (ch != EOF) {
// 处理读取到的字符
}
fclose(file);
return 0;
}
fputc()
: 向文件写入一个字符#include
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
int ch = 'A';
int result = fputc(ch, file);
if (result == ch) {
// 写入成功
}
fclose(file);
return 0;
}
fgets()
: 从文件中读取一行文本#include
int main() {
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
char buffer[100];
if (fgets(buffer, sizeof(buffer), file) != NULL) {
// 处理读取到的文本行
}
fclose(file);
return 0;
}
fputs()
: 向文件写入一行文本#include
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
const char *text = "Hello, World!";
if (fputs(text, file) != EOF) {
// 写入成功
}
fclose(file);
return 0;
}
fprintf()
: 格式化写入数据到文件#include
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
int number = 42;
fprintf(file, "The answer is: %d\n", number);
fclose(file);
return 0;
}
fscanf()
: 从文件中格式化读取数据#include
int main() {
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
int number;
if (fscanf(file, "%d", &number) == 1) {
// 处理读取到的整数
}
fclose(file);
return 0;
}
feof()
: 检查文件结束标志#include
int main() {
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
while (!feof(file)) {
int ch = fgetc(file);
if (ch != EOF) {
// 处理读取到的字符
}
}
fclose(file);
return 0;
}
ftell()
: 获取文件位置指针的当前位置#include
int main() {
FILE *file = fopen("data.bin", "rb");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
fseek(file, 0, SEEK_END); // 移动文件指针到文件末尾
long fileSize = ftell(file); // 获取当前位置
// 处理文件大小
fclose(file);
return 0;
}
fseek()
: 设置文件位置指针的位置#include
int main() {
FILE *file = fopen("data.bin", "rb");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
fseek(file, 50, SEEK_SET); // 移动文件指针到文件的第 50 个字节位置
// 处理文件指针的位置
fclose(file);
return 0;
}
rewind()
: 将文件位置指针重置到文件的开头#include
int main() {
FILE *file = fopen("data.bin", "rb");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
rewind(file); // 重置文件指针到文件开头
// 处理文件内容
fclose(file);
return 0;
}
remove()
: 删除文件#include
int main() {
if (remove("example.txt") == 0) {
// 文件删除成功
} else {
perror("文件删除失败");
}
return 0;
}
rename()
: 重命名文件#include
int main() {
if (rename("old_name.txt", "new_name.txt") == 0) {
// 文件重命名成功
} else {
perror("文件重命名失败");
}
return 0;
}
tmpfile()
: 创建临时文件#include
int main() {
FILE *tempFile = tmpfile(); // 创建临时文件
if (tempFile != NULL) {
// 使用临时文件进行操作
} else {
perror("创建临时文件失败");
}
return 0;
}
tmpnam()
: 生成临时文件名#include
int main() {
char *tempFileName = tmpnam(NULL); // 生成临时文件名
if (tempFileName != NULL) {
// 使用临时文件名
} else {
perror("生成临时文件名失败");
}
return 0;
}
feof()
: 检查文件结束标志#include
int main() {
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
while (!feof(file)) {
int ch = fgetc(file);
if (ch != EOF) {
// 处理读取到的字符
}
}
fclose(file);
return 0;
}
fflush()
: 刷新文件缓冲区#include
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
fputs("Hello, World!", file);
fflush(file); // 刷新文件缓冲区,确保数据被写入磁盘
fclose(file);
return 0;
}
ferror()
: 检查文件错误标志#include
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
int ch = fgetc(file);
if (ch == EOF) {
if (ferror(file)) {
perror("读取文件时发生错误");
}
}
fclose(file);
return 0;
}
perror()
: 打印错误消息#include
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
// 尝试执行文件操作
fclose(file);
return 0;
}
clearerr()
: 清除文件错误和结束标志#include
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
clearerr(file); // 清除错误和结束标志
// 尝试执行文件操作
fclose(file);
return 0;
}
setvbuf()
: 设置文件缓冲区#include
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
char buffer[1024];
setvbuf(file, buffer, _IOFBF, sizeof(buffer)); // 设置文件缓冲区
// 使用文件进行写入操作
fclose(file);
return 0;
}
fileno()
: 获取文件描述符#include
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
int fd = fileno(file); // 获取文件描述符
// 使用文件描述符进行操作
fclose(file);
return 0;
}
flockfile()
: 锁定文件以进行线程安全的访问#include
#include
void *thread_function(void *arg) {
FILE *file = (FILE *)arg;
flockfile(file); // 锁定文件
// 使用文件进行操作
funlockfile(file); // 解锁文件
return NULL;
}
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
pthread_t thread;
pthread_create(&thread, NULL, thread_function, file);
// 主线程也可以使用文件进行操作
pthread_join(thread, NULL);
fclose(file);
return 0;
}
funlockfile()
: 解锁文件以允许其他线程访问#include
#include
void *thread_function(void *arg) {
FILE *file = (FILE *)arg;
flockfile(file); // 锁定文件
// 使用文件进行操作
funlockfile(file); // 解锁文件
return NULL;
}
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("文件打开失败");
return 1;
}
pthread_t thread;
pthread_create(&thread, NULL, thread_function, file);
// 主线程也可以使用文件进行操作
pthread_join(thread, NULL);
fclose(file);
return 0;
}
getc()
: 从标准输入流中读取一个字符#include
int main() {
int ch = getc(stdin); // 从标准输入流读取一个字符
if (ch != EOF) {
// 处理读取到的字符
}
return 0;
}
putc()
: 将字符写入标准输出流#include
int main() {
int ch = 'A';
int result = putc(ch, stdout); // 将字符写入标准输出流
if (result == ch) {
// 写入成功
}
return 0;
}
getchar()
: 从标准输入流中读取一个字符#include
int main() {
int ch = getchar(); // 从标准输入流读取一个字符
if (ch != EOF) {
// 处理读取到的字符
}
return 0;
}
putchar()
: 将字符写入标准输出流#include
int main() {
int ch = 'A';
int result = putchar(ch); // 将字符写入标准输出流
if (result == ch) {
// 写入成功
}
return 0;
}
feof()
: 检查文件结束标志#include
int main() {
while (!feof(stdin)) {
int ch = getc(stdin);
if (ch != EOF) {
// 处理读取到的字符
}
}
return 0;
}
ferror()
: 检查文件错误标志#include
int main() {
int ch = getc(stdin);
if (ch == EOF) {
if (ferror(stdin)) {
perror("读取标准输入流时发生错误");
}
}
return 0;
}
clearerr()
: 清除文件错误和结束标志#include
int main() {
int ch = getc(stdin);
if (ch == EOF) {
clearerr(stdin); // 清除错误和结束标志
}
return 0;
}
fread()
和 fwrite()
: 这两个函数用于二进制文件的读取和写入。fread()
用于从文件中读取二进制数据,而 fwrite()
用于将二进制数据写入文件。它们不适用于文本文件。
fgetc()
和 fputc()
: 这两个函数用于字符级别的读取和写入。fgetc()
从文件中读取一个字符,而 fputc()
将一个字符写入文件。它们适用于文本文件。
fgets()
和 fputs()
: 这两个函数用于文本行的读取和写入。fgets()
从文件中读取一行文本,而 fputs()
将一行文本写入文件。它们适用于文本文件。
getc()
和 putc()
: 这两个函数类似于 fgetc()
和 fputc()
,但它们操作标准输入和标准输出流,而不是文件。getc(stdin)
从标准输入中读取一个字符,而 putc(ch, stdout)
将字符写入标准输出。
getchar()
和 putchar()
: 这两个函数也操作标准输入和标准输出流,类似于 getc()
和 putc()
,但它们不需要传递流参数。getchar()
从标准输入中读取一个字符,而 putchar()
将字符写入标准输出。
feof()
和 ferror()
: 这两个函数都用于检查文件操作的状态,但它们检查的是不同的条件。feof()
检查文件结束标志,如果文件已到达末尾,它返回非零值。ferror()
检查文件错误标志,如果发生了文件相关的错误,它返回非零值。通常,你会在文件操作之后使用这两个函数来检查状态。
#include
int main() {
// fopen(): 2个参数
FILE *file = fopen("example.txt", "w"); // 文件名和文件打开模式
// fclose(): 1个参数
fclose(file); // 文件指针
// fread(): 4个参数
char buffer[100];
size_t bytesRead = fread(buffer, sizeof(char), sizeof(buffer), file); // 数据缓冲区,每个数据项的大小,数据项的数量,文件指针
// fwrite(): 4个参数
char data[] = "Hello, World!";
size_t bytesWritten = fwrite(data, sizeof(char), sizeof(data), file); // 数据缓冲区,每个数据项的大小,数据项的数量,文件指针
// fgetc(): 1个参数
int ch = fgetc(file); // 文件指针
// fputc(): 2个参数
int ch = 'A';
int result = fputc(ch, file); // 字符,文件指针
// fgets(): 3个参数
char buffer[100];
if (fgets(buffer, sizeof(buffer), file) != NULL) { // 字符串缓冲区,最大读取字符数,文件指针
// 处理读取到的文本行
}
// fputs(): 2个参数
const char *text = "Hello, World!";
if (fputs(text, file) != EOF) { // 字符串,文件指针
// 写入成功
}
// fprintf(): 2个参数
int number = 42;
fprintf(file, "The answer is: %d\n", number); // 文件指针,格式化字符串和数据
// fscanf(): 2个参数
int number;
if (fscanf(file, "%d", &number) == 1) { // 文件指针,格式化字符串和数据
// 处理读取到的整数
}
// feof(): 1个参数
while (!feof(file)) { // 文件指针
int ch = fgetc(file);
if (ch != EOF) {
// 处理读取到的字符
}
}
// ftell(): 1个参数
long currentPosition = ftell(file); // 文件指针
// fseek(): 3个参数
fseek(file, 50, SEEK_SET); // 文件指针,偏移量,起始位置
// rewind(): 1个参数
rewind(file); // 文件指针
// remove(): 1个参数
if (remove("example.txt") == 0) { // 文件名
// 文件删除成功
}
// rename(): 2个参数
if (rename("old_name.txt", "new_name.txt") == 0) { // 旧文件名,新文件名
// 文件重命名成功
}
// tmpfile(): 无参数
FILE *tempFile = tmpfile(); // 无参数
// tmpnam(): 1个参数
char *tempFileName = tmpnam(NULL); // 字符串缓冲区(可选)
// feof(): 1个参数
while (!feof(file)) { // 文件指针
int ch = fgetc(file);
if (ch != EOF) {
// 处理读取到的字符
}
}
// fflush(): 1个参数
fflush(file); // 文件指针
// ferror(): 1个参数
int ch = fgetc(file);
if (ch == EOF) {
if (ferror(file)) { // 文件指针
perror("读取文件时发生错误");
}
}
// perror(): 1个参数
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("文件打开失败"); // 错误消息前缀字符串
return 1;
}
// clearerr(): 1个参数
int ch = fgetc(file);
if (ch == EOF) {
clearerr(file); // 文件指针
}
// setvbuf(): 3个参数
char buffer[1024];
setvbuf(file, buffer, _IOFBF, sizeof(buffer)); // 文件指针,缓冲区,缓冲模式
// fileno(): 1个参数
int fileDescriptor = fileno(file); // 文件指针
// flockfile(): 1个参数
flockfile(file); // 文件指针
// funlockfile(): 1个参数
funlockfile(file); // 文件指针
// getc(): 1个参数
int ch = getc(stdin); // 文件指针
// putc(): 2个参数
int ch = 'A';
int result = putc(ch, stdout); // 字符,文件指针
// getchar(): 无参数
int ch = getchar(); // 无参数
// putchar(): 1个参数
int ch = 'A';
int result = putchar(ch); // 字符
// feof(): 1个参数
while (!feof(stdin)) { // 文件指针
int ch = getc(stdin);
if (ch != EOF) {
// 处理读取到的字符
}
}
// ferror(): 1个参数
int ch = getc(stdin);
if (ch == EOF) {
if (ferror(stdin)) { // 文件指针
perror("读取标准输入流时发生错误");
}
}
// clearerr(): 1个参数
int ch = getc(stdin);
if (ch == EOF) {
clearerr(stdin); // 文件指针
}
return 0;
}