Установка минимального размера буфера - PullRequest
0 голосов
/ 29 октября 2019

Я кое-что заметил, когда использовал функцию setvbuf () для установки буфера обработки файлов. Если я не использую размер буфера 256 или выше, я получаю странные символы, когда пытаюсь напечатать буфер. Однако, если я использую 256 размеров для буфера, я получаю правильное представление символов до 8 символов. Я провел исследование по этой проблеме, но, думаю, я не смог найти ответ из-за недостатка знаний.

#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 Ответ

1 голос
/ 29 октября 2019

Содержимое буфера, переданного в setvbuf, является неопределенным в любое время (см. 7.21.5.6 / 2 в стандарте C11 или cppreference на setvbuf ). Так что ничего ожидать не стоит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...