我从funcA调用函数funcB.
funcB使用几个printf语句来输出数据.
有没有办法通过funcA捕获数据?
我无法修改funcB.
funcB使用几个printf语句来输出数据.
有没有办法通过funcA捕获数据?
我无法修改funcB.
funcB(){ printf( "%s","My Name is" ); printf( "%s","I like ice cream" ); } funcA(){ funcB(); }
解决方法
这个答案是以POSIX为中心的.您可以使用freopen将stdout重定向到文件.但是,在执行此操作之前,您需要复制STDOUT_FILENO,因此可以使用fdopen将stdout恢复到与其原始状态类似的状态.
int stdout_fd = dup(STDOUT_FILENO); freopen(redirected_filename,"w",stdout); funcB(); fclose(stdout); dup2(stdout_fd,STDOUT_FILENO); stdout = fdopen(STDOUT_FILENO,"w"); close(stdout_fd);
对于C流,您可以使用Johnathan Wakely’s answer.