C语言输入输出重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言输入输出重定向相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h> // for exit()
#include <string.h> // for strcpy(), strcat()
#define LEN 40

int main(int argc, char *argv[])

FILE *in, *out; // declare two FILE pointers
int ch;
char name[LEN]; // storage for output filename
int count = 0;

// check for command-line arguments
if (argc < 2)

fprintf(stderr, "Usage: %s filename\n", argv[0]);
exit(1);

// set up input
if ((in = fopen(argv[1], "r")) == NULL)

fprintf(stderr, "I couldn't open the file \"%s\"\n",
argv[1]);
exit(2);

// set up output
strncpy(name,argv[1], LEN - 5); // copy filename
name[LEN - 5] = '\0';
strcat(name,".red"); // append .red
if ((out = fopen(name, "w")) == NULL)
// open file for writing
fprintf(stderr,"Can't create output file.\n");
exit(3);

// copy data
while ((ch = getc(in)) != EOF)
if (count++ % 3 == 0)
putc(ch, out); // print every 3rd char
// clean up
if (fclose(in) != 0 || fclose(out) != 0)
fprintf(stderr,"Error in closing files\n");

return 0;

这个程序读入文件重定向到另一个文件,创建的另一个文件在哪打开?
如果用 >

在C语言中,可以使用freopen将输入输出重定向。
C语言的标准输入输出为stdin和stdout,这两个变量的类型为FILE*类型,也就是说,标准输入输出操作,其本质还是文件操作。
当需要重定向时,可以调用
stdin = freopen("data.in","r",stdin);
stdout = freopen("data.out","w",stdout);
将标准输入重定向到data.in,将标准输出重定向到data.out。
当调用该函数时,需要引用头文件stdio.h。
参考技术A 这个两个文件都依赖于你在执行程序的时候的输入的参数的,你的参数如果有全路径,那么直接在那个路径下就存在了;如果没有路径仅仅是文件名,那么文件就在你当前执行程序时的路径之下

至于如何打开,在Windows command line下直接type就能看到内容了,Linux下用cat本回答被提问者采纳

以上是关于C语言输入输出重定向的主要内容,如果未能解决你的问题,请参考以下文章

C语言实现shell (包括管道输入输出重定向)

输入输出重定向

Linux之Shell编程(12)--Shell输入/输出重定向实例演示

Linux之Shell编程(12)--Shell输入/输出重定向实例演示

输入输出重定向

详解shell输出重定向:>/dev/null 2>&1