关于ssprintf()函数的问题

dengyiwolf 2006-09-22 05:01:06
想输出以下格式的数据:

ssprintf(name,"%2s",name);

在格式化时,“%2s”,能否使用一个变量来代替2,因为这个地方不是固定的,是随机的。
...全文
599 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengyiwolf 2006-09-25
  • 打赏
  • 举报
回复
多谢tailzhou
==================
结贴,也感谢大家的参与.

结贴
netxuning 2006-09-24
  • 打赏
  • 举报
回复
mark
tailzhou 2006-09-23
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(int argc,char * args[])
{
char str[50];

sprintf(str,"%.*s\n",2,"12345");
printf("%s",str);
return 0;
}
我忘了'%'后面那个'.'了.
dengyiwolf 2006-09-23
  • 打赏
  • 举报
回复
为什么输出还是有乱码呀,

ngyiw屯屯屯屯屯屯屯妄?瓠?瓠韩

前面5个字符是正确的,后面的不需要,
sprintf(pDest,"% * s",intEnd,pDest);
这条语句没起到作用呀.
jixingzhong 2006-09-22
  • 打赏
  • 举报
回复
用 * 号啊,
星号代表的参数, 由后面给出的参数指定:
int width;
width = 10;
ssprintf(str,"%*s", width ,"12345");
dengyiwolf 2006-09-22
  • 打赏
  • 举报
回复
有没有其它变通的方法呀
dengyiwolf 2006-09-22
  • 打赏
  • 举报
回复
写了以下一函数: 想得到以下函数
输入; pdat: dengyiwolf
intstar: 3
intend: 5
得到: ngyiw

char *middle(uchar *pDat,uchar *pDest,uint intStar,uint intEnd)
{

memcpy(pDest,pDat+intStar,intEnd); //从第INTSTAR位开始,取出INTEND个字符
//因为得到的数据有乱码:pDest是这样的数据 "ngyiw烫烫烫蘢engyiwolf"
//所以想格式一下只要,前面的intEnd个字符(intEnd是可变的)
//sprintf(pDest,"%%%ds",intEnd,pDest); 这样不行呀
//如果直接用常量表示,就会正常得出数据
//如: sprintf(pDest,"%5s",pDest);
// sprintf(pDest,"%2s",pDest);
return pDest;

}
du51 2006-09-22
  • 打赏
  • 举报
回复
int i=2;
sprintf(fomater,"%%%ds",i);
lj860603 2006-09-22
  • 打赏
  • 举报
回复
,“%2s”,能否使用一个变量来代替2
===============
不行。得用常量。
speeches 2006-09-22
  • 打赏
  • 举报
回复
你要做什么啊?
tailzhou 2006-09-22
  • 打赏
  • 举报
回复
输出:
D:\projects\cl>test
12345
tailzhou 2006-09-22
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(int argc,char * args[])
{
char str[50];

sprintf(str,"%*s",20,"12345");
printf("%s",str);
return 0;
}
飞哥 2006-09-22
  • 打赏
  • 举报
回复
可以使用正则表达式
[0-9]
boy_1 2006-09-22
  • 打赏
  • 举报
回复
不能:可以定义随机函数:,“%2s”,它只是输出格式:

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧