您的位置:首页 > 其它

字符串分割

2015-06-24 11:10 190 查看
连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理.
  输入:连续输入字符串(输入两次,每个字符串长度小于100)
  输出:输出到长度为8的新的字符串数组。
  e.g. input: abc
               123456789
       output:abc00000
               12345678
               90000000

#include<iostream>
#include<cstring>
using namespace std;

void Devision(char** s_input,char** s_output,int row);
int main()
{
int row=2;
char **s_input=new char*[row];
char **s_output=new char*[10];
for(int i=0;i<10;i++)
s_output[i]=new char[8];
for(int i=0;i<row;i++)
{
s_input[i]=new char[100];
cin>>s_input[i];
}
Devision(s_input,s_output,row);
return 0;
}

void Devision(char** s_input,char** s_output,int row)
{
int i,j,k=0;
int row_input=0,row_output=0;
int len[row];
for(i=0;i<row;i++)
{
len[row_input++]=strlen(s_input[i]);//计算二维数组每行的元素个数
cout<<strlen(s_input[i])<<endl;
}
len[row_input]='\0';
for(i=0;i<row;i++)
{
if(len[i]<=8)
{
k=0;
for(j=0;j<len[i];j++)
s_output[row_output][k++]=s_input[i][j];
if(k!=8)
{
for(int tmp=k;tmp<8;tmp++)
s_output[row_output][tmp]='0';
}
cout<<s_output[row_output]<<endl;
row_output++;
cout<<"row_output="<<row_output<<endl;
}
else
{
int num=len[i]/8-1;
char x;
if(len[i]%8)
num++;
j=0;
while(num!=0)
{
for(k=0;k<8;k++)
{
if(s_input[i][j])
s_output[row_output][k]=s_input[i][j++];
else
s_output[row_output][k]='0';
x=s_output[row_output][k];
}
cout<<s_output[row_output]<<endl;
row_output++;
cout<<"row_output="<<row_output<<endl;
cout<<"j="<<j<<endl;
cout<<"x="<<x<<endl;
if(x!='0')
{
for(int tmp=0;tmp<8;tmp++)
{
if(s_input[i][j])
s_output[row_output][tmp]=s_input[i][j++];
else
s_output[row_output][tmp]='0';
}
cout<<s_output[row_output]<<endl;
row_output++;
cout<<"row_output="<<row_output<<endl;
cout<<"j="<<j<<endl;
}
num--;
cout<<"num="<<num<<endl;
}
}
}
for(int m=0;m<row_output;m++)
{
for(int n=0;n<8;n++)
cout<<s_output[m]
<<"\t";
cout<<endl;
}

}
写的程序有点麻烦,大家有简单的算法欢迎共享啊。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: