
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) 展开
#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) 展开
2个回答
展开全部
sprintf 第一个参数应当是地址
reschar+strlen(reschar) 相当于 输出到字符串中 的 第几个位置,等同:
地址 &reschar[strlen(reschar)],
reschar 是 char reschar[50]; 的首地址。
strlen(reschar)] 是当前已写入的字符串长度
循环时,字符串长度,一次一次增长,写入位置一次一次右推。
reschar+strlen(reschar) 相当于 输出到字符串中 的 第几个位置,等同:
地址 &reschar[strlen(reschar)],
reschar 是 char reschar[50]; 的首地址。
strlen(reschar)] 是当前已写入的字符串长度
循环时,字符串长度,一次一次增长,写入位置一次一次右推。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询