IO流与文件流的缓冲问题
//代码没多大意义,仅举个例子#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<conio.h>
#include<process.h>
int main()
{ ///////////////////////以下可以略去不看////////////////////////////////////////
system("if exist C:\\测试文件夹 echo 已经存在测试文件夹,正在清空...");
system("if exist C:\\测试文件夹 del C:\\测试文件夹 /q");
system("if not exist C:\\测试文件夹 echo 不存在 \"C:\\测试文件夹 正在建立文件夹...\"");
system("if exist C:\\测试文件夹 rd C:\\测试文件夹");
if(!system("md C:\\测试文件夹"))
printf("测试文件夹建立成功!文件路径:C:\\测试文件夹\\test.bin \n");
//////////////////////////////////////////////////////////////////////////////
ofstream fileo("C:\\测试文件夹\\test.bin",ios::binary);
char input='\0'; //从此处改变 char buffer[2]={'\0','\0'}
printf("写入文件:>"); // printf("写入文件:>");
while(input!='\r') // while(buffer[0]!='\r')
{ input=getche(); // { input=getche();
fileo<<input; // buffer[1]=buffer[0];
} // buffer[0]=input;
// if(buffer[0]!='\b')
// fileo<<buffer[1];
// } //试图在文件里面过滤掉backspace符
printf("写入完成!\n");
fileo.close();
printf("文件关闭!\n");
ifstream filei("C:\\测试文件夹\\test.bin",ios::binary);
char info[100];
for(int j=0;j<100;j++)
info[j]='\0';
filei.read(info,99);
cout<<"读取完毕,输出:>"<<info<<endl; //改变代码后在“读取完毕,输出”后没有输出任何东西!!!
filei.close();
return 0;
}
直接的代码编译后能输出输入的字符
另一个问题:如果将printf函数用IO流的cin代替,结果会导致cout输出的顺序混乱
已经很多次碰到这个问题了,猜想是跟IO流与文件流的缓冲有关,但还是不清楚。
恳请那位大虾详细指教!
[此贴子已经被作者于2007-3-18 13:38:39编辑过]