| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2290 人关注过本帖
标题:IO流与文件流的缓冲问题
取消只看楼主 加入收藏
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
 问题点数:0 回复次数:4 
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编辑过]

搜索更多相关主题的帖子: 文件 缓冲 
2007-03-18 13:17
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
没有人能够说说自己的看法吗

try new catch
2007-03-19 21:19
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
谢谢楼上的
我是想问为什么两种代码会导致不同的输出结果
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符
那位大侠能解释一下输出缓冲与文件流缓冲的关系

try new catch
2007-03-20 20:13
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
哦!!!恍然大悟 谢了
还问一个问题,为什么把 printf换成cout 后输出的顺序会变化?

try new catch
2007-03-20 21:15
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
谢谢各位大虾和斑竹的讨论!,真是大有收获

try new catch
2007-03-22 13:08
快速回复:IO流与文件流的缓冲问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012244 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved