易截截图软件、单文件、免安装、纯绿色、仅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 ......

C/S 与 B/S 的区别


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

又是3只C。。。= =

1.写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
#include<stdio.h>
int gcd(int,int);
int lcm(int,int);
int gcd(int m,int n)
{
if(m%n==0)
return n;
else
return gcd(n,m%n);
}
int lcm(int m,int n)
{
return m*n/(gc ......

GCC 编译c程序的方法及过程解析

GCC 编译c程序的方法及过程解析 
Justin.zp.Yang 2010.04.10
        目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C 、 C++ 和 Object C 等语言编写的程序。 GCC 不仅功能非常强大,结构 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号