易截截图软件、单文件、免安装、纯绿色、仅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 发现个全局变量与局部变量的区别

发现个全局变量与局部变量的区别:
[code=C/C++]
char** t;
main()
{
    char c[1];
    char** t1;
    sprintf(c,"%d",t);
    printf("t=%s---\n",c);
    if(strcmp(c,"0")!=0)
  &nbs ......

堆栈、linux c程序存储空间布局的总结

栈主要用来存放局部变量, 传递参数, 存放函数的返回地址.esp 始终指向栈顶, 栈中的数据越多, esp的值越小.
堆用于存放动态分配的对象, 当你使用 malloc , new 等进行分配时,所得到的空间就在堆中. 动态分配得到的内存附带有分配信息, 所以你能够 realloc 和 free调它们.
全局,静态和常量是分配在数据区中的。数据区包括b ......

C/S 与 B/S 的区别


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

我的C实践(7):位计数

  位计数就是对一个数中具有某些特征的位进行计数。看下面实现:
/* bitscount.c:位计数 */
/* 计算x中1位的数目:方案1,采用分治策略 */
inline int pop(unsigned x){
/* 对每个2位字段,先析出其右端的1位,再析出其左端的1位,然后让这两个位相加 */
x=(x & 0x55555555)+((x>>1) & 0x555555 ......

我的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 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号