fread和fwrite
时间: 2023-06-14 15:02:56 浏览: 60
fread和fwrite是C语言中用于文件读写的函数。它们的原型分别为:
```c
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
```
其中,fread函数从文件流中读取数据,并将其存储到ptr指向的内存区域中,最多读取count个元素,每个元素的大小为size。函数返回实际读取的元素个数,如果出错或读到文件结尾,返回值可能小于count。
fwrite函数将ptr指向的内存区域中的数据写入到文件流中,写入count个元素,每个元素的大小为size。函数返回实际写入的元素个数,如果出错,返回值可能小于count。
举个例子,如果我们想要从一个名为“test.bin”的二进制文件中读取10个int类型的数据,并将其存储到一个名为“data”的数组中,可以使用以下代码:
```c
int data[10];
FILE *fp = fopen("test.bin", "rb"); // 以二进制模式打开文件
if (fp != NULL) {
fread(data, sizeof(int), 10, fp); // 读取数据到数组中
fclose(fp); // 关闭文件
}
```
如果我们想要将一个名为“output.txt”的文本文件中的一些字符串写入到文件中,可以使用以下代码:
```c
char str1[] = "Hello, world!";
char str2[] = "This is a test.";
FILE *fp = fopen("output.txt", "w"); // 以文本模式打开文件
if (fp != NULL) {
fwrite(str1, sizeof(char), strlen(str1), fp); // 写入第一个字符串
fwrite(str2, sizeof(char), strlen(str2), fp); // 写入第二个字符串
fclose(fp); // 关闭文件
}
```
需要注意的是,在使用这两个函数时,要确保文件已经被正确打开,并且指定了正确的读写模式(二进制或文本)。另外,还要保证读取和写入的数据类型和大小与文件中存储的数据类型和大小相同,否则可能会发生数据损坏或读取错误的情况。