C语言读写函数有哪些
目录
1.fopen:用于打开文件,并返回一个文件指针。
2.fclose:用于关闭已打开的文件。
3.fgetc:从文件中读取一个字符。
4.fgets:从文件中读取一行数据。
5.fscanf:从文件中按照指定的格式读取数据。
6.fread:从文件中读取指定数量的数据块。
7.fwrite:将指定数据块写入文件。
8.fprintf:将格式化的数据写入文件。
9.fputs:将一个字符串写入文件。
10.fseek:设置文件指针的位置。
11.ftell:返回当前文件指针的位置。
12.rewind:将文件指针重新定位到文件的开头。
1.fopen:用于打开文件,并返回一个文件指针。
FILE *fopen(const char *filename, const char *mode);
FILE *fopen(打开文件地址/名字(默认地址为程序地址),读写模式)
示例
FILE *fp = fopen("file.txt", "r");
// 打开名为file.txt的文件进行读取
模式 | 描述 |
---|---|
r | 打开一个已有的文本文件,允许读取文件。 |
w | 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 |
a | 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 |
r+ | 打开一个文本文件,允许读写文件。 |
w+ | 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 |
a+ | 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 |
如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:
“rb”, “wb”, “ab”, “rb+”, “r+b”, “wb+”, “w+b”, “ab+”, “a+b”
2.fclose:用于关闭已打开的文件。
int fclose(FILE *stream);
示例
fclose(fp); // 关闭文件指针fp所指向的文件
3.fgetc:从文件中读取一个字符。
int fgetc(FILE *stream);
示例
char ch = fgetc(fp);
// 从文件指针fp所指向的文件中读取一个字符,并存储在变量ch中
4.fgets:从文件中读取一行数据。
fgetc() 函数从 fp 所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回 EOF。下面的函数允许您从流中读取一个字符串:
char *fgets(char *str, int n, FILE *stream);
示例
char *fgets( char *buf, int n, FILE *fp );
fgets(buffer, 100, fp);
// 从文件指针fp所指向的文件中读取一行数据,
//最多读取99个字符(第100个位置用于存储字符串结尾符'\0'),
//并存储在缓冲区buffer中
5.fscanf:从文件中按照指定的格式读取数据。
int fscanf(FILE *stream, const char *format, …);
示例
int a, b;
fscanf(fp, "%d %d", &a, &b);
//从文件指针fp所指向的文件中按照指定格式读取两个整数,
//并存储在变量a和b中
实例代码
#include <stdio.h>
int main() {
FILE *fp;
int num1, num2, num3;
float avg;
// 打开文件
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
// 从文件中读取格式化数据
fscanf(fp, "%d %d %d", &num1, &num2, &num3);
fscanf(fp, "%f", &avg);
// 输出读取的数据
printf("num1 = %d, num2 = %d, num3 = %d\n", num1, num2, num3);
printf("avg = %.2f\n", avg);
// 关闭文件
fclose(fp);
return 0;
}
6.fread:从文件中读取指定数量的数据块。
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
ptr:一个指向存储读取数据的内存区域的指针。
size:要读取的每个数据项的大小,以字节为单位。
count:要读取的数据项数量。
stream:指向 FILE 对象的指针,该对象指定了一个输入流。
示例
int data[5];
fread(data, sizeof(int), 5, fp);
// 从文件指针fp所指向的文件中读取5个整数,并存储在数组data中
7.fwrite:将指定数据块写入文件。
fwrite(buffer, size, count, fp);
示例
char buffer[100] = "Hello, World!";
fwrite(buffer, sizeof(char), 100, fp);
// 将缓冲区buffer中的100个字符写入文件指针fp所指向的文件中
8.fprintf:将格式化的数据写入文件。
int fprintf(FILE *stream, const char *format, …);
示例
int a = 10;
fprintf(fp, "a = %d", a); // 将格式化的数据写入文件指针fp所指向的文件,输出为"a = 10"
9.fputs:将一个字符串写入文件。
int fputs(const char *str, FILE *stream);
示例
fputs("Hello, World!", fp);
// 将字符串"Hello, World!"写入文件指针fp所指向的文件
10.fseek:设置文件指针的位置。
int fseek(FILE *stream, long offset, int whence);
示例
fseek(fp, 10, SEEK_SET);
// 将文件指针fp所指向的文件位置设置为从文件开头开始的10个字节处
11.ftell:返回当前文件指针的位置。
long ftell(FILE *stream);
示例
long pos = ftell(fp);
// 获取文件指针fp所指向的文件当前位置,并存储在变量pos中
12.rewind:将文件指针重新定位到文件的开头。**
void rewind(FILE *stream);
rewind(fp);
// 将文件指针fp所指向的文件位置重新定位到文件的开头