sprintf:将格式化的数据写入字符串,第一个参数是缓冲区buf。成功返回写字符的总数,失败返回一个负数

1.最简单用法:

char str[20];
sprintf(str,"%d",123);//%d指定将要被格式化的参数类型
printf("%s\n",str);

打印:123

2.指定打印宽度,不足左边补空格

char str[20];
sprintf(str,"%8d%8d",1234,5678);
printf("%s\n",str);
sprintf(str,"%-8d%-8d",1234,5678);//-就是左对齐
printf("%s\n",str);

打印:    1234    5678     //左边有4个空格
          1234    5678          //左边无空格

3.控制浮点数的打印格式。%m.nf格式,其中m表示打印的宽度,n表示小数点后面的位数

char str[20];
sprintf(str,"%10.2f",3.1415926);
printf("%s\n",str);
sprintf(str,"%.4f",3.1415926);//不指定单位长度,只指定小数的位数
printf(str,"",3.1415926);

打印:            3.14          //一共10个单位的长度,但只保留2位小数,所以前面出现空格

3.1416

4.拼接字符串

char str[20];
char str1[20]="ping";
char str2[20]="hua";sprintf(str,"%s%s",str1,str2);
printf("%s\n",str);sprintf(str,"%.2s%.2s",str1,str2);//小数点后面的2表示从str1和str2取出的字符数
printf("%s\n",str);没有小数点直接用2,则是指定打印宽度
sprintf(,str"%s%s",str1,str2);
printf("%s\n",str);

打印:pinghua

pihu

ping                           hua         //前面很多空格

用*可以代替传入数字

sprintf(str,"%.*%.*s",2,str1,2str2);
printf("%s\n",str);

打印:pihu

4.特定格式的填充

int main()
{int a = 11;char buf[20] = "";sprintf(buf,"%010d",a);printf("%s\n",buf);return 0;
}

打印:0000000011

总共10个位,不足的左边0补齐

5.sprintf函数的返回值是最终打印到缓冲区的字符数目,这里就不演示了

sscanf:从一个字符串读进与指定格式相符的数据。成功返回参数的数目,失败返回-1

char buf[20];
sscanf("123456","%s",buf);//将指定的字符串输入到buf中,只读字符串(只处理字符串)
printf("%s\n",buf);

打印:123456

1.取指定长度字符串

char buf[20];
sscanf("123456","%4d",buf);//4是指定长度。不要与sprintf的类似格式混淆
printf("%s\n",buf);

打印:1234

2.字符匹配, %[^a]匹配到a则停止匹配,正则表达式^表示字符串开始的位置。%[^a-z]表示到a-z之间的任意字母就结束匹配。%[a-z]表示匹配到a-z的任意字符。

假设每次buf都被清空

sscanf("12|34","%[^|]",buf);
printf("%s\n",buf);sscanf("abc123","%[a-z]",buf);//匹配只能连续匹配,不能跳跃匹配。匹配只能从头开始.如:%[1-9],则会匹配为空。前面匹配不到后面就不会匹配
printf("%s\n",buf);sscanf("12abc","%[^a-z]",buf);
printf("%s\n",buf);

分别打印:12

abc

12

3.指定要跳过的字符

sscanf("abKOcd","%[a-z]KO[a-z]",,buf,buf1);
printf("%s\n%s\n",buf,buf1);

打印:ab

cd

4.分割以某字符隔开的字符串,[]-[]之间的-是过滤-本身的,起过滤作用

sscanf("123-456","%[^-]-[^-]",buf,buf1);
printf("%s\n%s\n",buf,buf1);

打印:123

456

5.过滤不想截取或不需要的字符串

sscanf("abc 123 def","%s %*s %s",buf,buf1);
printf("%s\n%s\n",buf,buf1);

打印::abc

def

snprintf:最多从源串中拷贝n-1个字符到目标串中,然后末尾加\0。所以目标串的大小为n的话,将不会溢出。成功返回欲写入字符串的长度,出错返回负值

sprintf,sscanf,snprintf相关推荐

  1. 关于sprintf和snprintf的比较

    #include <stdio.h> #include <string.h>typedef unsigned char uchar;#define BUF_SIZE 10 // ...

  2. 【字符串处理函数】sprintf与snprintf

    sprintf与snprintf 1.功能 1.1 sprintf 1.2 snprintf 2.函数说明 2.1 sprintf 2.1.1 函数原型 2.1.2 参数列表: 2.1.3 返回值: ...

  3. sprintf与snprintf区别

    sprintf的原型如下 int sprintf(char *str, const char &format, ...); sprintf是字符串格式化命令,主要功能是把格式化的数据写入字符串 ...

  4. sprintf 和 snprintf区别

    sprintf 和snprintf 函数区别 sprintf 函数定义见: https://cplusplus.com/reference/cstdio/sprintf/ snprintf 函数定义见 ...

  5. C库函数:scanf、fscanf、printf、fprintf、sprintf、 snprintf

    1. scanf 函数原型 int scanf(const char *format, ...);  功能:从标准输入 stdin 读取格式化输入. 2.fscanf 函数原型 int fscanf( ...

  6. fprintf,sprintf,sscanf,fscanf

    c/c++语言函数: fprintf 功 能: 传送格式化输出到一个文件中 用 法: int fprintf(FILE *stream, char *format[, argument,...]); ...

  7. [C] 库函数 sprintf() 和 snprintf()

    sprintf 发送格式化输出到 str 所指向的字符串 int sprintf(char *str, const char *format, ...) 实例: char filename[50]; ...

  8. C 字符串函数 sprintf()、snprintf() 详解

    一.sprintf() 函数详解 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前者 ...

  9. linux下c标准库位置,C 标准库 IO 使用详解

    其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数.输出参数和返回值,接下来才能开始设计具体的实现过程.C 语言标准库提供的接口功能很有限,不像 Pyth ...

最新文章

  1. django 动态更新属性值
  2. 网络编程之 TCP / UDP 及其流程比较
  3. 【WebRTC---入门篇】(一)WebRTC整体架构
  4. WiFi---AP+STA共存模式(ESP8266)
  5. [SHELL] LAMP一键安装脚本设计(v2.1)
  6. SwiftUI AsyncImage cancelled 无法加载图片
  7. Android:手把手教你打造可缩放移动的ImageView(下)
  8. 【USACO】回文平方数
  9. 转发和重定向又是什么“垃圾”——教你再分类
  10. Markowitz有效边界投资组合——利用python
  11. 11-linux文件操作
  12. 【Unity2D入门教程氵篇】简单制作一个弹珠游戏之制作场景④(设置不可破坏砖块,发布游戏设置)
  13. 如何设置显示网络计算机,如何在台式计算机上设置无线局域网络
  14. 考察思维的灵活性,僵化
  15. 【python基础知识学习(6)】面向对象编程
  16. flask搜索引擎whoosh的配置
  17. 客户端登录阿里云mysql数据库_Mysql数据库之数据库术语和客户端登陆
  18. XAMPP简介、安转、使用
  19. 去中心网络服务器,去IOE 去中心化_浪潮服务器_网络安全-中关村在线
  20. 线性代数(三十一) : 特征值与行列式以及迹的关系

热门文章

  1. shell脚本之nginx的安装
  2. (转)CentOS 7系统详细开机启动流程和关机流程
  3. 随笔18 java中的类加载器
  4. 机器人动力学建模实例:二连杆机械臂
  5. MySQL分区分表 原理详解
  6. Linux - 收藏集 - 掘金
  7. Types of intraclass correlation coefficience (ICC)
  8. exchange离线整理数据库
  9. 用Itext把数据导出到Pdf文档
  10. (How to)Windows Live Writer使用技巧