如:
//把整数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整数转成大写十六进位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)