sprintf
sprintf 基本知识
#include <stdio.h>
int sprintf(char *str, const char *format, ...);
功能:
根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到 出现字符串结束符 ‘\0’ 为止。
参数:
str:字符串首地址 format:字符串格式,用法和printf()一样
返回值:
成功:实际格式化的字符个数 失败: - 1
sprintf 常见用法
格式化字符串
//1. 格式化字符串 char buf[1024] = { 0 }; sprintf(buf, "你好,%s,欢迎加入我们!", "露露"); printf("buf的内容是:%s\n", buf); memset(buf, 0, 1024); sprintf(buf, "我今年%d岁了!", 20); printf("露露说:buf:%s\n", buf);
拼接字符串
//2. 拼接字符串 memset(buf, 0, 1024); char str1[] = "hello"; char str2[] = "world"; int len = sprintf(buf, "%s %s", str1, str2); printf("buf:%s len:%d\n", buf, len);
数字转字符串
//3. 数字转字符串 memset(buf, 0, 1024); int num = 100; sprintf(buf, "%d", num); printf("数字转字符串 buf:%s\n", buf); //设置宽度 右对齐 memset(buf, 0, 1024); sprintf(buf, "%8d", num); printf("右对齐buf:%s\n", buf); //设置宽度 左对齐 memset(buf, 0, 1024); sprintf(buf, "%-8d", num); printf("左对齐buf:%s\n", buf); //转成16进制字符串 memset(buf, 0, 1024); sprintf(buf, "0x%x", num); printf("16进制buf:%s\n", buf); //转成8进制字符串 memset(buf, 0, 1024); sprintf(buf, "0%o", num); printf("8进制buf:%s\n", buf);
更多格式可以参考我的另一篇博客:
https://yangyongli.blog.csdn.net/article/details/120522117
sscanf
sscanf 基本知识
头文件
#include <stdio.h>
函数声明
int sscanf(const char *str, const char *format, ...);
功能:
从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。
参数:
str:指定的字符串首地址 format:字符串格式,用法和scanf()一样
返回值:
成功:成功则返回参数数目,失败则返回-1 失败: - 1
%输入格式含义
sccanf 常见用法
#include<stdio.h> #include<stdlib.h> #include<string.h> //1. 跳过数据 void test01() { char buf[1024] = { 0 }; //跳过前面的数字 //匹配第一个字符是否是数字,如果是,则跳过 //如果不是则停止匹配 sscanf("123456aaaa", "%*d%s", buf); printf("跳过数据 buf:%s\n", buf); printf("----------------------------\n"); } //2. 读取指定宽度数据 void test02() { char buf[1024] = { 0 }; sscanf("123456aaaa", "%7s", buf); printf("读取指定宽度数据 buf:%s\n", buf); printf("----------------------------\n"); } //3. 匹配a-z中任意字符 void test03() { char buf[1024] = { 0 }; //先匹配第一个字符,判断字符是否是a-z中的字符,如果是匹配 //如果不是停止匹配 sscanf("abcdefg123456", "%[a-z]", buf); printf("匹配a-z中任意字符 buf:%s\n", buf); printf("----------------------------\n"); } //4. 匹配aBc中的任何一个 void test04() { char buf[1024] = { 0 }; //先匹配第一个字符是否是aBc中的一个,如果是,则匹配,如果不是则停止匹配 sscanf("abcdefg123456", "%[aBc]", buf); printf("匹配aBc中的任何一个 buf:%s\n", buf); printf("----------------------------\n"); } //5. 匹配非a的任意字符 void test05() { char buf[1024] = { 0 }; //先匹配第一个字符是否是aBc中的一个,如果是,则匹配,如果不是则停止匹配 sscanf("bcdefag123456", "%[^a]", buf); printf("匹配非a的任意字符 buf:%s\n", buf); printf("----------------------------\n"); } //6. 匹配非a-z中的任意字符 void test06() { char buf[1024] = { 0 }; //先匹配第一个字符是否是aBc中的一个,如果是,则匹配,如果不是则停止匹配 sscanf("123456ABCDbcdefag", "%[^a-z]", buf); printf("匹配非a-z中的任意字符 buf:%s\n", buf); printf("----------------------------\n"); } int main() { test01(); test02(); test03(); test04(); test05(); test06(); return 0; }
输出结果: