易截截图软件、单文件、免安装、纯绿色、仅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实践(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字符串反转算法

一个很简洁的算法:
void Reverse(char s[])
{
    for(int i = 0, j = strlen(s) - 1; i < j; ++i, --j) {
        char c = s[i];
        s[i] = s[j];
        s[j] = c;
 & ......

【转】C代码优化方案


1、选择合适的算法和数据结构
选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
在许多 ......

《C程序设计第三版》课后作业【第一章】

1.1请根据自己的认识,写出C语言的主要特点。
1.2C语言的主要用途是什么?它和其他高级语言有什么异同?
1.3写出一个C程序的构成。
1.4C语言以函数为程序的基本单位,有什么好处?
1.5请参照本章例题,编写一个C程序,输出一下信息:
×××××××××××& ......

【转】c代码优化


1、选择合适的算法和数据结构
选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
在许多 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号