C语言学习大纲--I/O流

专题九:I/O流与标准库

1.     IO流的打开和关闭

        FILE* fopen (

                                        constchar* filename, //文件路径

                                        const char* mode   // 打开模式

       );

      打开模式:

        r:

       w:

      a: 追加

      r+: 读写,文件必须存在,从头开始

      w+: 写读,文件不存在就创建,文件存在就清空

      a+: 读写,文件不存在就创建,文件存在就追加

      b: 二进制方式

     UNIX/Linux:二进制方式作用不大

     Windows:二进制方式,对读写内容不做任何转换。非二进制方式,写入\n,实际写入\r\n,文件中\r\n,读到的\n。

    返回值是IO流结构体指针,用户调用其他IO流函数。

    int fclose (

                            FILE* fp // fopen的返回值

    );

   成功返回0,否则返回EOF

   以下标准IO流是默认打开的:

   stdout: 标准输出

   stdin: 标准输入

   stderr: 标准出错


2.     格式化IO

int fprintf (

                                        FILE* stream, // IO流指针

                                        const char* format,// 格式字符串

                                          ... // 输出数据项

);

printf(...)实际就是fprintf (stdout, ...)

格式字符串:

%[标志][宽度][.精度][h|l|ll]类型符

标志:

- 左对齐

+ 输出正负号

# 输出进制标识

0 用0填充

宽度.精度:123.34,宽度6,精度2,%6.2f

h  short

l  long/double

ll  longlong

类型符:

d 十进制整数

c 字符

s 空字符结尾的字符串

f 浮点数

x/X 十六进制整数

o 八进制整数

p 地址(十六进制)

u 无符号十进制整数

g 浮点数(自动选择最短形式)

e 浮点数(科学计数法)

int fscanf (

                                 FILE*stream, // IO流指针

                                 constchar* format, // 格式字符串

                                 ...// 地址表

);

1)以空白字符(空格、制表、换行)作为数据分隔符。

2)模式匹配:根据格式化字符串的模式进行匹配,从中提取数据。

3)禁止赋值:*

4)字符集表示:只读取某个特定字符集中的字符,只要遇到字符集以外的字符即刻返回。

3.    非格式化IO

int fputc (

                                        intc, // 字符

                                        FILE*stream // IO流指针

);

成功返回c,失败返回EOF。

int fgetc (

                                        FILE*stream // IO流指针

);

成功返回读到的字符,失败或者遇到文件尾返回EOF。

int fputs(

                     constchar* str, //输出的字符串

                     FILE*stream //IO流指针

                     );

int fgets(

                     charbuf[], //缓冲区

                     intn,  //缓冲区大小

                     FILE*stream

                     );

1.     二进制IO

size_t fread(

                                 void*buf,  // 缓冲区指针

                                 size_tsize,  // 期望读取的数据单元字节数

                                 size_tcount, // 期望读取的数据单元数

                                 FILE*stream // IO流指针

);

成功返回实际读取的数组单元数。失败<0。

size_t fwrite(

                                 void*buf, // 缓冲区指针

                                 size_tsize, // 期望写入的数据单元字节数

                                 size_tcount, // 期望写入的数据单元数

                                   FILE* stream // IO流指针

);

              成功返回实际写入的数据单元数,失败<0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值