fopen fread fwrite fclose
时间: 2023-04-25 15:01:49 浏览: 65
fopen:打开一个文件,返回一个文件指针。
fread:从文件中读取数据,返回实际读取的数据量。
fwrite:向文件中写入数据,返回实际写入的数据量。
fclose:关闭一个文件,释放文件指针。
相关问题
fopen fwrite fread
fopen函数用于打开一个文件,并返回一个指向该文件的指针。它的原型如下:
```c
FILE *fopen(const char *filename, const char *mode);
```
其中,`filename`是要打开的文件名,`mode`是打开文件的模式,例如`"r"`表示只读,`"w"`表示写入,`"a"`表示追加等。
fwrite函数用于将数据写入文件。它的原型如下:
```c
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
```
其中,`ptr`是要写入的数据的指针,`size`是每个数据项的大小,`nmemb`是要写入的数据项的数量,`stream`是要写入的文件指针。
fread函数用于从文件中读取数据。它的原型如下:
```c
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);```
其中,`ptr`是存储读取数据的缓冲区的指针,`size`是每个数据项的大小,`nmemb`是要读取的数据项的数量,`stream`是要读取的文件指针。
下面是一个示例,演示了如何使用fopen、fwrite和fread函数:
```c
#include <stdio.h>
int main() {
FILE *file;
char data[] = "Hello, World!";
char buffer[20];
// 打开文件并写入数据
file = fopen("example.txt", "w");
fwrite(data, sizeof(char), sizeof(data), file);
fclose(file);
// 打开文件并读取数据
file = fopen("example.txt", "r");
fread(buffer, sizeof(char), sizeof(data), file);
fclose(file);
printf("Data read from file: %s\n", buffer);
return 0;
}
```
这个示例中,首先使用fopen函数打开一个名为"example.txt"的文件,并以写入模式打开。然后使用fwrite函数将字符串"Hello, World!"写入文件。接着使用fopen函数以读取模式打开同一个文件,并使用fread函数从文件中读取数据到缓冲区中。最后,打印出从文件中读取的数据。
fopen、fclose、fread、fwrite、fseek的函数原型及使用注意事项
1. fopen函数原型:
```c
FILE *fopen(const char *filename, const char *mode);
```
使用说明:
- filename:文件名,可以是相对路径或绝对路径,需要包含文件扩展名。
- mode:访问模式,可以是 `"r"`(只读)、`"w"`(只写)、`"a"`(追加)、`"rb"`(二进制只读)、`"wb"`(二进制只写)、`"ab"`(二进制追加)等。
返回值:
- 成功打开文件返回指向该文件的指针。
- 打开文件失败返回 `NULL`。
2. fclose函数原型:
```c
int fclose(FILE *stream);
```
使用说明:
- stream:打开文件的指针。
返回值:
- 关闭文件成功返回 0。
- 关闭文件失败返回非 0 值。
3. fread函数原型:
```c
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
```
使用说明:
- ptr:指向要读取数据的缓冲区。
- size:每个数据项的字节数。
- count:要读取的数据项数。
- stream:打开文件的指针。
返回值:
- 返回实际读取的数据项数,如果该值小于 count,则可能是读取到了文件末尾或者发生了错误。
4. fwrite函数原型:
```c
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
```
使用说明:
- ptr:指向要写入数据的缓冲区。
- size:每个数据项的字节数。
- count:要写入的数据项数。
- stream:打开文件的指针。
返回值:
- 返回实际写入的数据项数,如果该值小于 count,则可能是因为磁盘已满或者发生了错误。
5. fseek函数原型:
```c
int fseek(FILE *stream, long offset, int whence);
```
使用说明:
- stream:打开文件的指针。
- offset:偏移量,可以是正数或负数,如果是负数则表示向文件开头偏移。
- whence:偏移的位置,可以是 `SEEK_SET`(文件开头)、`SEEK_CUR`(当前位置)、`SEEK_END`(文件结尾)。
返回值:
- 执行成功返回 0。
- 执行失败返回非 0 值。
使用注意事项:
- 在使用文件 I/O 函数时,需要先打开文件,处理完后再关闭文件。
- 在使用 fread 和 fwrite 函数时,需要注意缓冲区的大小,避免溢出。
- 在使用 fseek 函数时,需要注意偏移量的取值范围,避免越界访问文件。