fwrite() 被声明为这样。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
Run Code Online (Sandbox Code Playgroud)
但实际写入的字节数只是 size * nmemb。那么为什么不只指定字节数呢?为什么需要同时指定 size 和 nmemb?谢谢。
Kur*_*ato -1
https://chromium.googlesource.com/chromiumos/third_party/glibc/+/cvs/libc-970216/stdio/fwrite.c
正如您在不同的 fwrite 实现中看到的(不仅在上面的链接中),返回的答案是return (size_t) written / size;。因此,成功后您将获得返回值nmemb。
例子:
#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
int main() {
int num = 2;
uint64_t *arr = malloc(num * sizeof(uint64_t));
arr[0] = (uint64_t)'a' ^ (uint64_t)'b' << 8 ^ (uint64_t)'c' << 16;
arr[1] = (uint64_t)'d' ^ (uint64_t)'e' << 8 ^ (uint64_t)'f' << 16;
size_t writed_size = 0;
writed_size = fwrite(arr, sizeof(arr), num, stdout);
if (writed_size == num) {
printf(" : Success\n");
}
writed_size = fwrite(arr, 1, sizeof(arr) * num, stdout);
if (writed_size == sizeof(arr) * num) {
printf(" : Success\n");
}
writed_size = fwrite(arr, sizeof(arr) * num, 1, stdout);
if (writed_size == 1) {
printf(" : Success\n");
}
free(arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
感谢@Eric Postpischil 纠正我之前的答案。
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |