如何判断stdin的数据类型

一 前言

linux环境下,存在文件IO和缓存IO(标准IO)两种。这两种IO都提供stdin、stdout和strerr,即标准输入、标准输出和标准错误。那么问题来了,stdin是什么类型的数据呢?FILE *: int

二 测试

既然提出了问题,那么就来写代码验证。设计思路是利用C语言的编译规则。

FILE *isFILE();
int * isINT();
FILE *isFILE() {
	return stdin;
}
int * isINT(){
	return *stdin;
}

运行两个函数
运行结果
In function ‘isINT’:
error: incompatible types when returning type ‘FILE’ {aka ‘struct _IO_FILE’} but ‘int *’ was expected
return *stdin;

结论是stdin是FILE* 类型。

三 拓展

上面已经得出结论,stdin的类型变量跟标准IO有关,那文件IO要如何引用stdin呢?
参考《Linux系统编程》。文件描述符0、1、2分别表示stdin、stdout和stderr,但Linux用宏表示这三个,分别是STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO。

stdin 一般是连接到终端的输入设备用户键盘,而stdout和stderr是终端的屏幕。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值