设置最小缓冲区大小

时间:2019-10-29 12:28:46

标签: c buffer

使用setvbuf()函数设置文件处理缓冲区时,我注意到了一些东西。如果我不使用256或更大的缓冲区,当我尝试打印缓冲区时会出现奇怪的符号。但是,如果我使用256个大小的缓冲区,则可以得到最多8个字符的正确char表示形式。我已经对这个问题进行了研究,但由于缺乏知识,我想找不到答案。

#include <stdio.h>
#define SIZE 8 //Below 256
int main(void)
{
 char buffer[SIZE];

 FILE *fp = fopen("name.txt","w");    
 setvbuf(fp,buffer,_IOFBF,SIZE);
 fputs("a",fp);
 printf("%s\n",buffer);
 fclose(fp);
 return 0;
}

预期产量

a

实际输出

a!'^//Something like this.

1 个答案:

答案 0 :(得分:1)

传递给setvbuf的缓冲区的内容在任何时候都是不确定的(请参阅7.21.5.6/2 in C11 standardcppreference page on setvbuf)。因此,您不应期望任何事情。