【stdout,stdin】标准文件指针与重定向

stdio.h 文件把3个文件指针与3个C程序自动打开的标准文件进行了关联。这三个就是标准流文件。

 

标准文件

文件指针

默认值

标准输入

stdin

键 盘

标准输出

stdout

显示器

标注错误

stderr

显示器

 

重定向指的是修改标准流文件的默认值,实现输出或输入到自己指定的地方去(freopen)

#include<stdio.h>
int main()
{
    printf("This will go into screen.\n");  //这条语句默认打印到屏幕上 

    if(freopen("D:\\Hello.txt", "w", stdout) == NULL)   //重定向,将标准输出定位文件 Hello.txt
        fprintf(stderr,"error redirecting stdout\n");
    printf("This will go into a file.\n");  //这条语句将会打印到文件中

    fclose(stdout);
    return 0;
}

 

这些指针都是 FILE 指针类型,所以可以被用作标准I/O函数的参数。

#include<stdio.h>
int main(){
	fprintf(stdout,"Hello World");
	return 0; 
}

运行结果:

 

#include<stdio.h>
#include<stdlib.h>

int main(){
	char s[20];
	fscanf(stdin,"%s",s);    //从键盘上获取一个字符串赋给s,以'\0'结尾代表结束
	fprintf(stdout,s);       //将s打印到屏幕
	return 0; 
}

运行结果:

 

#include<stdio.h>
#define MAXSIZE 50
int main(){
	char line[MAXSIZE];
	while(fgets(line,MAXSIZE,stdin) != NULL && line[0]!='\n'){    // stdin 从键盘获取的标准输入,以'\n'换行结尾为结束
		fputs(line,stdout);                                        // stdout 向屏幕输出的标准输出 
	}
	/*
	    如果你在新的一行起始处键入回车键,
	    fgets()函数读入换行符然后把它放进数组line的第一个元素中
		那么while循环将停止 
	*/
	return 0;
}

运行结果:

不输入任何信息并回车

 

参考书籍:

《C Primer Plus (第五版)》Stephen  Prata    云巅工作室译

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用以下代码将标准输出定向到终端: freopen("/dev/tty", "w", stdout); 其中,"/dev/tty" 是指向当前终端设备的文件描述符,"w" 表示以写模式打开文件stdout标准输出流。 ### 回答2: 在C++中,可以使用`freopen`函数将程序的标准输出定向到终端。 首先,需要包含头文件`<cstdio>`。接下来,在程序的适当位置调用`freopen`函数,将标准输出文件(stdout)定向到终端。 ``` #include <cstdio> int main() { // 将标准输出定向到终端 freopen("/dev/tty", "w", stdout); // 程序的其他代码 return 0; } ``` 在上述代码中,`freopen`的第一个参数是定向的目标文件,其中`/dev/tty`表示当前终端。第二个参数"w"表示以写方式打开文件,第三个参数`stdout`表示要定向的输出流。 通过调用`freopen`函数,程序的标准输出将被定向到终端,即使之后使用`cout`或`printf`等打印函数来输出数据,输出也会直接显示在终端上。 需要注意的是,一旦调用`freopen`函数将标准输出定向到终端后,之前已经打开的文件指针(如`ofstream`)将会被关闭,需要新打开对应文件后才能操作。 另外,`freopen`函数也可以将标准输入定向到终端,方法类似。只需将第二个参数的`"w"`改为`"r"`,第三个参数改为`stdin`即可。 ### 回答3: 在C/C++编程中,可以使用freopen函数来将标准输出定向到终端。 下面是一个简单的示例代码: ```c #include <stdio.h> int main() { freopen("/dev/tty", "w", stdout); printf("Hello, World!\n"); // 这行代码的输出会定向到终端 return 0; } ``` 上述代码中,`freopen("/dev/tty", "w", stdout)`的作用是将标准输出定向到终端。其中,`/dev/tty`是Linux系统中系统终端的设备文件路径。 在调用`printf`函数输出时,输出将被定向到终端,而不是默认的标准输出流。 需要注意的是,`freopen`函数需要在所有输出操作之前调用,以确保输出被正确定向到终端。 以上就是使用`freopen`函数将标准输出定向到终端的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值