fwrite 字节数多写
时间: 2023-12-22 14:28:27 浏览: 111
在使用fwrite函数时,如果写入的字节数多于实际数据的字节数,会导致文件中出现垃圾数据。因此,在使用fwrite函数时,应该确保写入的字节数与实际数据的字节数相等。如果写入的字节数少于实际数据的字节数,则只会写入部分数据。下面是一个示例代码:
```c
#include <stdio.h>
int main()
{
FILE *fp = fopen("test.bin", "wb");
if (fp == NULL) {
printf("Failed to open file.\n");
return -1;
}
int data = 0x12345678;
fwrite(&data, sizeof(int), 1, fp); // 写入4个字节
fclose(fp);
return 0;
}
```
上述代码中,我们向文件中写入了一个int类型的数据,占用4个字节。在使用fwrite函数时,我们指定了写入的字节数为sizeof(int),即4个字节。如果我们将写入的字节数改为8,则会向文件中写入4个字节的数据和4个字节的垃圾数据。
相关问题
使用fwrite往文件尾写数据
`fwrite`函数是C语言标准库中的一个函数,用于向文件的指定位置写入数据。如果你想往文件尾追加数据,你需要使用二进制模式(`"wb"` 或 `"ab"`),因为默认的文本模式("w")会清空文件然后再写入。
下面是一个简单的例子:
```c
#include <stdio.h>
int main() {
char data[] = "这是往文件尾追加的数据";
FILE *fp;
// 打开文件(如果不存在则创建),文件指针设为追加模式
fp = fopen("example.txt", "ab");
if (fp == NULL) {
printf("Failed to open the file.\n");
return 1;
}
// 写入数据,返回实际写入的字节数
size_t bytes_written = fwrite(data, sizeof(char), strlen(data), fp);
if (bytes_written != strlen(data)) {
printf("Write failed.\n");
} else {
printf("Data written successfully.\n");
}
// 关闭文件
fclose(fp);
return 0;
}
```
在这个例子中,`fwrite`会自动将数据添加到文件的当前位置,由于我们使用了追加模式,所以它会在文件末尾写入。如果文件已存在,新数据会被追加到原内容之后。
fwrite
`` 是一个 C 语言库函数,用于将数据块写入文件中。其原型如下:
```c
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
```
其中,`ptr` 是要写入的数据块的指针,`size` 是每个数据块的字节数,`count` 是要写入的数据块的数量,`stream` 是目标文件的指针。`fwrite` 函数的返回值是实际写入的数据块数量。
阅读全文