字符串分割

来源:互联网 发布:社交网络 网盘 编辑:程序博客网 时间:2024/06/05 19:48
连续输入字符串,请按长度为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][n]<<"\t";        cout<<endl;    }}
写的程序有点麻烦,大家有简单的算法欢迎共享啊。。
0 0
原创粉丝点击