标准文件描述符和一些指定标准输出对象的函数fprintf(),getchar() 的用法区别。

Linux中头文件路径:/usr/include/unistd.h

//标准文件描述符
/* Standard file descriptors.  */
#define    STDIN_FILENO    0    //标准输入文件描述符
#define    STDOUT_FILENO    1    //标准输出文件描述符
#define    STDERR_FILENO    2    //标准出错文件描述符

头文件路径:/usr/include/stdio.h

typedef关键字给数据类型取别名

typedef struct _IO_FILE FILE;  //  FILE  等价于  struct _IO_FILE

/* Standard streams.  */
extern struct _IO_FILE *stdin;        //标准输入的文件指针
extern struct _IO_FILE *stdout;        //标准输出的文件指针
extern struct _IO_FILE *stderr;        //标准出错的文件指针

等价于
extern FILE *stdin;  --> 对应文件描述符0        
extern FILE *stdout; --> 对应文件描述符1         
extern FILE *stderr; --> 对应文件描述符2         

/* C89/C99 say they're macros.  Make them happy.  */
#define stdin stdin    --> 前面stdin是宏定义   后面stdin是变量  (好处:这样做可以让文件指针变得跟文件描述符一样,都是宏定义)
#define stdout stdout
#define stderr stderr


总结

        文件描述符              文件指针
标准输入        STDIN_FILENO            stdin
标准输出        STDOUT_FILENO           stdout
标准出错        STDERR_FILENO           stderr
 

printf(),sprintf()和fprintf()函数的用法区别

printf()的 默认对象是标准输出,标准输出具有缓冲区,是一个缓冲区函数,要有特定的条件才能输出,标准出错缓冲区会立刻输出缓冲区上的内容

sprintf()保存一个字符到缓冲区中,拼接字符串

fprintf()   可以修改printf()的输出对象

     #include <stdio.h>

    int fprintf(FILE *stream, const char *format, ...);

参数:
    stream:文件指针
    format:输出的内容
   printf("hello");   --> 因为printf默认对象是标准输出,所以这句话含义是把"hello"放在标准输出缓冲区中。

   等价于  

   fprintf(stdout,"hello");  --> 指定把"hello"放在标准输出缓冲区中

   fprintf(stderr,"hello"); --->标准出错缓冲区会立刻输出内容

getchar(),getc(),

getchar()   --> 从标准输入缓冲区中获取一个字符   作用:清空缓冲区

#include <stdio.h>

   int getchar(void);

参数:无
返回值:
    成功:获取到的字符
    失败:EOF

每次scanf()之后,都要跟这句话
while(getchar() != '\n');
就可以清空缓冲区。

getc()    --> 可以去任意一个文件指针中获取一个字符

#include <stdio.h>

  int getc(FILE *stream);

参数:
    stream:需要获取字符的文件指针

返回值:
    成功:获取到的字符
    失败:EOF

fgetc()   等价于  getc

   #include <stdio.h>

   int fgetc(FILE *stream);

参数:
    stream:需要获取字符的文件指针

返回值:
    成功:获取到的字符
    失败:EOF

下面这个函数用的多

 fgets()    --->  获取一个字符串到一个缓冲区中   -->  man 3 fgets

    #include <stdio.h>

   char *fgets(char *s, int size, FILE *stream);

参数:
    s: 缓冲区
    size: 最多获取的字符个数
    stream: 文件指针

返回值:
    成功:第一个参数s
    失败:NULL
 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
fscanf函数函数是C语言中用于文件输入的函数。 1. fscanf函数: fscanf函数用于从文件中读取格式化数据。它的基本语法如下: ``` int fscanf(FILE *stream, const char *format, ...); ``` 其中,stream是指向要读取的文件的指针format是一个字符串,指定了要读取的数据的格式;...表示可变参数,用于接收读取到的数据。 例如假设有一个为file.txt的文本文件,其中包含了一整数数据,可以使用fscanf函数文件中读取这些数据: ```c FILE *file = fopen("file.txt", "r"); int num1, num2; fscanf(file, "%d %d", &num1, &num2); fclose(file); ``` 上述代码中,fscanf函数按照"%d %d"的格式从file.txt文件中读取两个整数,并将读取到的值分别存储到num1和num2变量中。 2. fprintf函数fprintf函数用于将格式化的数据写入文件。它的基本语法如下: ``` int fprintf(FILE *stream, const char *format, ...); ``` 其中,stream是指向要写入的文件的指针;format是一个字符串,指定了要写入的数据的格式;...表示可变参数,用于传递要写入的数据。 例如,可以使用fprintf函数将一些数据写入到名为output.txt的文件中: ```c FILE *file = fopen("output.txt", "w"); int num1 = 10, num2 = 20; fprintf(file, "The numbers are: %d and %d", num1, num2); fclose(file); ``` 上述代码中,fprintf函数按照"The numbers are: %d and %d"的格式将num1和num2的值写入到output.txt文件中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖爱Kun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值