2016-08-07 40 views
1

ich versuche, den Inhalt einer Datei auf einem Puffer setvbuf() Funktion in C unter Verwendung zu speichern, ist dies der Code, dies zu tun:Warum fügt die Funktion setvbuf() dem Puffer in C Wachstum hinzu?

#include <stdio.h> 
#include <string.h> 

int main() { 

FILE *fp=fopen("test.txt","r+"); 
char buff[BUFSIZ]; 
char buff2[BUFSIZ]; 

setvbuf(fp,buff2,_IOFBF,BUFSIZ); 
fgets(buff,BUFSIZ,fp); 
printf("%s\n",buff2); 

system("PAUSE"); 
return 0; 
} 

und dies ist der Inhalt der Datei

line 1 
line 2 
line 3 

aber wenn ich den Code ausführen, zeigt die Konsole:

line 1 
line 2 
line 3 3 

wo kommt es von der zusätzlichen char am Ende der Ausgabe ?.

Antwort

2

Ob oder in welcher Weise eine Implementierung den bereitgestellten Puffer zu setvbuf verwendet, ist nicht angegeben. Der Versuch, etwas Bedeutungsvolles aus seinen Inhalten abzuleiten, während es mit einer STDIO-Datei verknüpft ist, sollte man nicht tun.

+0

Jeder Vorschlag, der 'setvbuf' ersetzt ?. – Mehdi

+0

Was versuchst du zu tun? Es gibt * absichtlich * keine Möglichkeit, den Inhalt des stdio-Puffers zu betrachten; Dies ist Teil der Abstraktion/Kapselung, die verschiedene Implementierungsoptionen ermöglicht. –