fwrite()没有指定次数

时间:2016-06-09 07:14:27

标签: c file-io

int main(void)
{
    FILE* out = fopen("out.txt", "w");

    string buffer = "Milo Banana\n";

    fwrite(buffer, 12, 12, out);

    fclose(out);
}

上面的代码不会在out.txt文件中写入12次数据,但是当我使用循环时它会工作

int main(void)
    {
    FILE* out = fopen("out.txt", "w");

    string buffer = "Milo Banana\n";

    for(int i = 0; i < 12; i++)
    {
        fwrite(buffer, 12, 1, out);
    }

    fclose(out);
}

上面的代码可以正常工作并编写&#34; milo banana&#34;在out.txt文件中12次但是 为什么第一个代码根本无法正常工作

1 个答案:

答案 0 :(得分:2)

不,根据定义,这不是真的。

N1570 7.21.8.2 fwrite函数说:

#include <stdio.h>
size_t fwrite(const void * restrict ptr,
     size_t size, size_t nmemb,
     FILE * restrict stream);
     

[...]

     

2 fwrite函数从ptr指向的数组写入nmemb元素   其大小由size指定,指向stream指向的流。

“元素数”参数用于写入数组的连续元素,而不是重复写入相同的数据。