按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
我写的代码如下:
#include <iostream>
using namespace std;
void cut (const char (*a)[256], int &many)
{
if (strlen(*a) == 0 ){
return;
}
int length = 0;
while ((length = strlen(*a))){
if (length <= many ){
const char *p = *a;
int i = 0;
char b[256]={0};
for(i=0; i< length ; i++)
if (*p != '\0'){
b[i] = *p++;
}
for(i=length; i< many ; i++){
b[i]='0';
}
b[i]='\0';
cout << b <<endl;
++a;
}
else{
const char *p = *a;
int nmany = length /many;
int lmany = length % many;
for (int i =0 ; i < nmany; i++){
char c[256]={0};
int k=0;
for (;k < many ; k++){
if (*p != '\0'){
c[k] = *p++;
}
}
c[k] = '\0';
cout << c << " ";
}
if (lmany != 0 ){
char d[256] = {0};
int i=0;
for (;i < lmany;i++ ){
if (*p != '\0'){
d[i] = *p++;
}
}
for(; i< many ; i++){
d[i]='0';
}
d[i] = '\0';
cout << d << endl;
++a;
}
else{
cout << endl;
++a;
}
}
}
return;
}
int main()
{
while (1)
{
char a[256][256] ={{0}};
cout << "Please intput number and many \n";
int number;
int many;
cin >> number >> many;
if ( many > 256 || many <= 0 )
{
cout << "Please intput many in 1-256 \n";
continue;
}
if (number > 0 && number < 256)
{
getchar();
for(int i = 0;i < number; ++i ){
gets(a[i]);//遇到ennter健结束
}
cut (&a[0], many);
cout << endl;
}
else{
cout << "Please input number 1-255 \n";
continue;
}
}
return 0;
}
测试结果如下: