C语言:sscanf和sprintf以及 fread和fwrite的使用

sscanf和sprintf

sscanf和sprintf是scanf和printf家族的一对成员,用于处理和分析字符串非常强大的两个函数

sprintf函数原型:

int sprintf(char *str, const char *format, ...)

作用是格式化字符串,具体功能如下所示:
①将数字变量转换为字符串;
②得到整型变量的16进制和8进制字符串;
③连接多个字符串。
举例:

  char str[256] = { 0 };
     int data = 1024;
    将data转换为字符串
    sprintf(str, "%d", data);
   获取data的十六进制
   sprintf(str, "0x%X", data);
    获取data的八进制
   sprintf(str, "0%o", data);
   const char *s1 = "Hello";
   const char *s2 = "World";
   连接字符串s1和s2
   sprintf(str, "%s %s", s1, s2);

   sscanf函数原型:

   int sscanf(const char *str, const char *format, ...)

 将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数内。具体功能如下:
       ①根据格式从字符串中提取数据。如从字符串中取出整数、浮点数和字符串等;
       ②取指定长度的字符串;
       ③取到指定字符为止的字符串;
       ④取5仅包含指定字符集的字符串;
       ⑤取到指定字符集为止的字符串;
 sscanf可以支持格式字符%[]:
       (1) - : 表示范围,如:%[1 - 9]表示只读取1 - 9这几个数字 % [a - z]表示只读取a - z小写字母,类似地 %[A - Z]只读取大写字母
       (2) ^ : 表示不取,如:%[^ 1]表示读取除'1'以外的所有字符 %[^ / ]表示除 / 以外的所有字符
       (3), : 范围可以用","相连接 如%[1 - 9, a - z]表示同时取1 - 9数字和a - z小写字母
       (4)原则:从第一个在指定范围内的数字开始读取,到第一个不在范围内的数字结束%s 可以看成%[] 的一个特例 %[^](注意^后面有一个空格!)
       举例:

       1.常见用法:
       char str[10] = { 0 };
       sscanf("12345", "%s", str);
       printf("str=%s\n", str);
       2.取指定长度的字符串:
       sscanf("123456", "%4s", str);
       printf("str=%s\n", str);
       取最大长度为4字节的字符串
       3.取到指定字符位置的字符串:
       sscanf("123456 abcdef", "%[^ ]s", str);
       printf("str=%s\n", str);
       取遇到空格为止的字符串
       4.取仅包含指定字符集的字符串:
       sscanf("123456abcdef BCDEF", "%[1-9a-z]s", str);
       printf("str=%s\n", str);
       取仅包含1到9和小写字母的字符串
       5.取到指定字符集为止的字符串:
       sscanf("123456abcdef BCDEF", "%[^A-Z]s", str);
       printf("str=%s\n", str);
       取遇到大写字母为止的字符串

fread和fwrite的使用


       fread和fwrite函数
           函数原型:

  size_t fread(void *buffer, size_t size, size_t, count, FILE *pf)
  size_t fwrite(void *buffer, size_t size, size_t count, FILE *pf)

           功能:读写数据块(将内存的内容直接写入磁盘)
           返回值:成功,返回读 / 写的个数,出错或文件尾,返回0.
           参数含义:
           buffer 从pf中读取到buffer / 将buffer中的写入到pf中去。
           size 每个要读 / 写的数据块的大小。
           count 要读 / 写的数据块的个数
           pf 要读 / 写的文件指针
           ANSI C文件系统提供fread()和fwrite()两个函数,用于读 / 写长于一字节的数据类型。这两个函数允许读 / 写各种类型的数据块:
     对fread()而言,buffer是接收读入数据的内存区的指针。
     对fwrite()而言,buffer是写入到那个文件的信息的指针。
     count的值确定读 / 写多少项,每项长度等于num_bytes。
     fp是指向事先打开的流的指针。
     正常情况下,fread()返回读入的项数,fwrite()返回写出的项数。
     只要文件按二进制打开,fread()和fwrite()就可以读 / 写各类信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值