C语言sprintf怎么使用?

C语言sprintf怎么使用?,第1张

sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。

如:

//把整数123 打印成一个字符串保存在s 中。

sprintf(s, "%d", 123)//产生"123"

可以指定宽度,不足的左边补空格:

sprintf(s, "%8d%8d", 123, 4567)//产生:" 123 4567"

当然也可以左对齐:

sprintf(s, "%-8d%8d", 123, 4567)//产生:"123 4567"

也可以按照16 进制打印:

sprintf(s, "%8x", 4567)//小写16 进制,宽度占8 个位置,右对齐

sprintf(s, "%-8X", 4568)//大写16 进制,宽度占8 个位置,左对齐

字符串是以为\0结束符的,那几个,"qwerw","45678",光是串长就有5了,带上结束符要占用6个字节,你定义的定长数组只有5个长度,所以是没有结束的假串,只能算是字符数组而不是串,不能用%s这样的 *** 作,如果要用%s作串使用,必需是每个都有结束符的,

你要的如下:

char keycode[][6]={"",“rew","123","qwerw","45678","waa",}

//一维的下标必需是最长串+1,以保存能存结束符\0,或都不用定长串,全用指针

//二维下标可以省,用你实际初始化赋值的个数自动处理了

char sz[256]//有空间但未初始化,第一个用strcpy()可以正常加进来

int i

for(i = 1, strcpy(sz, keycode[0]) i<sizeof(*keycode) i++) strcat(sz, keycode[i])//全部添加到sz中了

===========用指针不用二维定长数组

char* keycode[] = {"",“rew","123","qwerw","45678","waa",} // 对一个指针数组初始化

char sz[256] = {0}//必需初始化为0,下面就可以直接strcat添加进来,省了第一个strcpy()

for(int i = 0 i<sizeof(keycode) /sizeof(char*)i++) strcat(sz, keycode[i])

可以这么考虑!函数功能:把格式化的数据写入某个字符串

头文件:stdio.h函数原型:intsprintf(char*buffer,constchar*format,[argument]…)参数列表:buffer:char型指针,指向欲写入的字符串地址。

format:char型指针,指向的内存里面存放了格式字符串。

[argument]...:可选参数,可以是任何类型的数据。

返回值:字符串长度(strlen)

相关函数:intsprintf_s(char*buffer,size_tsizeOfBuffer,constchar*format,[argument]...)

int_sprintf_s_l(char*buffer,size_tsizeOfBuffer,constchar*format,locale_tlocale,[argument]...)

intswprintf_s(wchar_t*buffer,size_tsizeOfBuffer,constwchar_t*format,[argument]...)

int_swprintf_s_l(wchar_t*buffer,size_tsizeOfBuffer,constwchar_t*format,locale_tlocale,[argument]…)

template

intsprintf_s(char(&buffer)[size],constchar*format,[argument]...)//仅存在于C++

template

intswprintf_s(wchar_t(&buffer)[size],constwchar_t*format,[argument]...)//仅存在于C++

编辑本段参数说明及应用举例sprintf格式的规格如下所示。[]中的部分是可选的。

%[指定参数][标识符][宽度][.精度]指示符

若想输出`%'本身时,请这样`%%'处理。

1.处理字符方向。负号时表示从后向前处理。

2.填空字元。0的话表示空格填0;空格是内定值,表示空格就放着。

3.字符总宽度。为最小宽度。

4.精确度。指在小数点后的浮点数位数。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

转换字符=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

%%印出百分比符号,不转换。

%c整数转成对应的ASCII字元。

%d整数转成十进位。

%f倍精确度数字转成浮点数。

%o整数转成八进位。

%s整数转成字符串。

%x整数转成小写十六进位。

%X整数转成大写十六进位。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11406050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存