int sprintf(char* str,const char* format,...);根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符‘\0’为止。str字符串首地址,format字符串格式。返回值,成功,返回实际格式化的字符个数,失败,返回-1.
sprintf
1.格式化字符串
sprintf(buf,”hello %s”,”lily”);
2.拼接字符串
sprintf(buf,”%s %s”,”hello”,”lily”);
3.数字转字符串
sprintf(buf,”%d”,88);
4.设置宽度和对齐
sprintf(buf,”%8d”,num);//宽度为8,右对齐
sprintf(buf,”%-8d”,num);//宽度为8,左对齐
5.整数转成16进制字符串,小写
sprintf(buf,”0x%x”,num);
6.整数转换成8进制字符串
sprintf(buf,”0%o”,num);
****************************************************
int sscanf(const char* str,const char* format,...);从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。str指定的字符串首地址,format字符串格式。返回值,成功返回实际读取的字符个数,失败,返回-1.
1.跳过数据
sscanf(“1111eeee”,”%*d%s”,buf);//跳过前面的数字,匹配第一个字符是否是数字,如果是,则跳过,如果不是,停止匹配。
2.读取指定数据宽度
sscanf(“1111eeee”,”%5s”,buf);
3.匹配a-z的任意字符
sscanf(“sdfgh787878”,”%[a-z]”
4.匹配abc中的任一个
sscanf(“abccba7788”,”%[abc]”,buf);
5.匹配非a的任意字符
sscanf(“badd8877”,”%[^a]”,buf);
6.匹配非a-z的任意字符
sscanf(“4567uuyytt”,”%[^a-z]”,buf):
%*s %*d | 跳过数据 |
%[width]s | 读指定宽度的数据 |
%[a-z] | 匹配a到z的任意字符 |
%[aBc] | 匹配a,B,c其中一个 |
%[^a] | 匹配非a的任意字符 |
%[^a-z] | 表示读取除a-z以外的所有字符 |