fwrite 函数
fwrite函数是C语言中的一个文件操作函数,用于将数据写入文件。它的原型如下:
```c
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
```
其中,参数ptr是一个指向要写入数据的指针;参数size是要写入的每个数据项的大小,以字节为单位;参数count是要写入的数据项的个数;参数stream是文件指针,指定要写入数据的文件。
fwrite函数的返回值是实际写入的数据项个数,一般与count的值相等。如果返回值小于count,则说明写入文件时发生了错误。
在使用fwrite函数之前,需要先打开要写入的文件。可以使用fopen函数来打开文件,例如:
```c
FILE *fp = fopen("", "w");
if (fp == NULL) {
    printf("打开文件失败\n");
    return 1;
}
```
上述代码中,通过fopen函数打开了名为的文件,并以写入模式打开。如果打开文件失败,会返回NULL。
接下来,可以使用fwrite函数将数据写入文件。例如,将一个整数写入文件:
```c
int data = 123;
size_t ret = fwrite(&data, sizeof(int), 1, fp);
if (ret != 1) {
    printf("写入文件失败\n");
    return 1;
}
```
上述代码中,将整数data写入文件fp中,每个数据项的大小为sizeof(int),即4个字节,写入的数据项个数为1。fwrite函数返回的实际写入数据项个数为1,表示写入成功。
sizeof结构体大小写入字符串时,可以使用strlen函数来获取字符串的长度,例如:
```c
char *str = "Hello, World!";
size_t ret = fwrite(str, sizeof(char), strlen(str), fp);
if (ret != strlen(str)) {
    printf("写入文件失败\n");
    return 1;
}
```
上述代码中,将字符串"Hello, World!"写入文件fp中,每个数据项的大小为sizeof(char),即1个字节,写入的数据项个数为字符串的长度。
写入结构体时,可以将结构体的地址传递给fwrite函数,例如:
```c
struct Person {
    char name[20];
    int age;
};
struct Person p = {"Tom", 20};
size_t ret = fwrite(&p, sizeof(struct Person), 1, fp);
if (ret != 1) {
    printf("写入文件失败\n");
    return 1;
}
```
上述代码中,将结构体Person写入文件fp中,每个数据项的大小为sizeof(struct Person),即24个字节,写入的数据项个数为1。
在写入文件完成后,需要使用fclose函数关闭文件,释放资源,例如:
```c
fclose(fp);
```
上述代码中,关闭文件fp。
总结一下,fwrite函数是C语言中用于将数据写入文件的函数。使用fwrite函数时,需要先打开文件,然后将数据写入文件,最后关闭文件。在写入文件时,需要指定每个数据项的大小和数据项的个数,并根据返回值判断是否写入成功。使用fwrite函数可以方便地将数据写入文件,是文件操作中常用的函数之一。