C/C++中sprintf函数问题

转换字符串格式为原来字符串里的字符+该字符连续出现的个数,例如字符串1233422222,转换为1121324125,程序为:#include<iostream>#inc... 转换字符串格式为原来字符串里的字符+该字符连续出现的个数,例如字符串1233422222,转换为1121324125,程序为:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout<<"input the number:"<<endl;
char reschar[50];
reschar[0]='\0';
string str;
cin>>str;
int k,count=1;
int len=str.length();
for(k=0;k<len;k++)
{
if(str[k+1]==str[k])
count++;
else
{
cout<<reschar<<endl;
cout<<strlen(reschar)<<endl;
sprintf(reschar+strlen(reschar),"%c%d",str[k],count);//第一个参数为何为reschar+strlen(reschar)
count=1;
}
}
cout<<reschar<<"gg"<<endl;
cout<<endl;
return 0;
}
程序中sprintf(reschar+strlen(reschar),"%c%d",str[k],count);//第一个参数为何为reschar+strlen(reschar)
展开
 我来答
金色潜鸟
推荐于2016-02-05 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5951万
展开全部
sprintf 第一个参数应当是地址
reschar+strlen(reschar) 相当于 输出到字符串中 的 第几个位置,等同:
地址 &reschar[strlen(reschar)],
reschar 是 char reschar[50]; 的首地址。
strlen(reschar)] 是当前已写入的字符串长度
循环时,字符串长度,一次一次增长,写入位置一次一次右推。
hzl880201
2012-06-30 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:118万
展开全部
楼上的答案正确,reschar在开始定义的时候,首个元素赋值为\0,说明这个字符数组是空的,strlen(rechar)的结果应该是0,所以第一个参数的意思就是将你转换后的字符存到reschar数组里面,存放的起始地址是reschar+strlen(reschar),在此处也就是reschar的首地址了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式