易截截图软件、单文件、免安装、纯绿色、仅160KB

在C和C++中把标准输出重定向到指定文件

C++的实现
#include<fstream>  
#include <iostream>
using namespace std;
int main()
{  
 ofstream logTest("foo.log");    
 streambuf *oldbuf = cout.rdbuf(logTest.rdbuf());   
  
 cout << "输出到标准输出,但实际输出到了foo.log文件中\n";    
 logTest << "输出到文件,虽然将cout重定向到了log,但不影响log本身的使用\n";   
  
  // 恢复流缓冲区    
  cout.rdbuf(oldbuf);
  cout << "输出到标准输出\n";  
  getchar();
}  
C的实现
#include <ios>
#include <iostream>
#include <fstream>
//若使用包含.h文件方式则编译报错
using namespace std;
void main()
{
    ofstream ofs("e:\\a.txt");
    streambuf *osb = cout.rdbuf(ofs.rdbuf());
    cout << "to file" << endl;
    cout.rdbuf(osb);
    cout << "to term" << endl;
}
啊,这样对于实现来说可能不是很妥,改成手动刷新缓冲才有应用价值
#include <stdio.h>
#include <string.h>
void main()
{
    FILE old_stdout;
    FILE *fp = fopen("e:\\a.txt", "w");
    memcpy(&old_stdout, &_iob[1], sizeof(FILE));
    memcpy(&_iob[1], fp, sizeof(FILE));
    
    /*call any functions..*/
    printf("to file");
    /**/
    /*把缓冲刷新到文件*/
    fflush(stdout);
    memcpy(&_iob[1], &old_st


相关文档:

C/S 与 B/S 的区别


 C/S 与 B/S 
1.硬件环境不同: 
  C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
  B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行&n ......

我的C实践(8):字搜索

  字搜索就搜索一个数中具有某些特征的位。实现如下:
/* wsearch.c:字搜索 */
/* 从左边寻找第一个0字节:第0(1,2,3)个字节是0时,返回0(1,2,3),否则返回4 */
int zbytel(unsigned x){
if((x>>24)==0) return 0;
else if((x & 0x00ff0000)==0) return 1;
else if((x & 0x0000ff00)==0) r ......

我的C实践(9):位和字节的重排

  位和字节的重排在密码学算法中有广泛的应用。
/* rearran.c:位和字节的重排 */
/* 位反转:以字的中心为对称点进行位反射
例如: abcd efgh ijkl mnop ABCD EFGH IJKL MNOP
位反转:PONM LKJI HGFE DCBA ponm lkji hgfe dcba */
unsigned rev(unsigned x){
/* 交换相邻的单个位 */
x=(x & 0x5 ......

彻底搞定C指针

 
转帖自http://teren.itpub.net/post/15914/189516写的非常好,同时对作者打破砂锅问到底的精神彻底折服
《彻底搞定C指针》第一篇 变量的内存实质
要理解C指针,我认为一定要理解C中“变量”的存储实质,所以我就从“变量”这个东西开始讲起吧!
先来理解理解内存空间吧!请看下图:
内存地 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号