问个有关问题,二维数组的
问个问题,二维数组的!
// chat.cpp : Defines the entry point for the console application.
//
#include "stdafx.h "
#include "iostream.h "
#include "stdio.h "
#include "stdlib.h "
#include "string.h "
char * get_char(char *strrec,char *strfrom,int len,int start)
{
int i=0;
char *result=strrec;
strfrom+=start;
while(*strfrom&&i <len)
{
*strrec++=*strfrom++;
i++;
}
return result;
}
char * buff(char *strrec,char *strfrom,float len)
{
int i=0,j=0;
float num;
char str[100][100]={0};
num=strlen(strfrom)/len;
while(i <num)
{
i++;
}
for(j=0;j <i;j++)
{
get_char(strrec,strfrom,5,5*j);
strcat(str[j],strrec);
}
return str[100];
}
void main()
{
int i=0;
int n=5;
char str[100];
char str1[255]= "0 ";
char str2[255]= "abcdefghigklnmopqrstuvwxyz ";
str=buff(str1,str2,5);
}
功能:把字符数组按一定数量分成几部分装到二维数组中,再打印出来。比如: a~z中,按每五个一组,分成abcde,fghij,klnmo,oprst,uvwxy,z.再打印出来。
在char * buff(char *strrec,char *strfrom,float len)函数中,我想把二维数组的值返回来并取出打印。但二维数组用得不熟悉,所以搞不出来
------解决方案--------------------
#include "stdafx.h "
#include <iostream>
#include <string.h>
using namespace std;
char * get_char(char *strrec,char *strfrom,int len)
{
int i=0;
while(*strfrom && i <len)
{
strrec[i]=strfrom[i];
i++;
}
return strrec;
}
void buff(char strrec[10][10],char *strfrom,int len)
{
int i=0;
int num;
//char str[100][100]={0}; //
num=(strlen(strfrom)-1)/len + 1; // modify 5的整数倍
while(i <num)
{
get_char(strrec[i],strfrom+len*i,len);
++i;
}
//return str[100]; // 返回临时对象很危险
}
// modify
void print(char str[10][10], int count)
{
for (int i=0; i <count; ++i)
{
cout < < str[i] < < endl;
}
}
void main()
{
int i=0;
int n=5;
char str1[10][10]={ " "}; // modify
char str2[255]= "abcdefghigklnmopqrstuvwxyz ";
buff(str1,str2,5);
print(str1, (strlen(str2)-1)/n + 1); // modify
}
------解决方案--------------------
不需要 get_char函数 !! 直接在buff函数里转换就可以了!
char *buff(char *string,char straim[100][100],int n)
{
int len;
int i =0, j =0;
len=strlen(string)/n;
for(i=0;i <len+1;i++)
{
for(j = 0; j < len ; j++)
{
straim[i][j] = string[j+i*(len)];
printf( "%c ",straim[i][j]);
if( j == (len-1) )
{
printf( "\n ");
}
}
}
return straim[100];
}
void main()
{
int i=0;
int n=5;
char str[255]= "abcdefghigklnmopqrstuvwxyzabcdertuiop ";
char str1[100][100] = {0};
printf( "%s ",buff(str,str1,n));
}
// chat.cpp : Defines the entry point for the console application.
//
#include "stdafx.h "
#include "iostream.h "
#include "stdio.h "
#include "stdlib.h "
#include "string.h "
char * get_char(char *strrec,char *strfrom,int len,int start)
{
int i=0;
char *result=strrec;
strfrom+=start;
while(*strfrom&&i <len)
{
*strrec++=*strfrom++;
i++;
}
return result;
}
char * buff(char *strrec,char *strfrom,float len)
{
int i=0,j=0;
float num;
char str[100][100]={0};
num=strlen(strfrom)/len;
while(i <num)
{
i++;
}
for(j=0;j <i;j++)
{
get_char(strrec,strfrom,5,5*j);
strcat(str[j],strrec);
}
return str[100];
}
void main()
{
int i=0;
int n=5;
char str[100];
char str1[255]= "0 ";
char str2[255]= "abcdefghigklnmopqrstuvwxyz ";
str=buff(str1,str2,5);
}
功能:把字符数组按一定数量分成几部分装到二维数组中,再打印出来。比如: a~z中,按每五个一组,分成abcde,fghij,klnmo,oprst,uvwxy,z.再打印出来。
在char * buff(char *strrec,char *strfrom,float len)函数中,我想把二维数组的值返回来并取出打印。但二维数组用得不熟悉,所以搞不出来
------解决方案--------------------
#include "stdafx.h "
#include <iostream>
#include <string.h>
using namespace std;
char * get_char(char *strrec,char *strfrom,int len)
{
int i=0;
while(*strfrom && i <len)
{
strrec[i]=strfrom[i];
i++;
}
return strrec;
}
void buff(char strrec[10][10],char *strfrom,int len)
{
int i=0;
int num;
//char str[100][100]={0}; //
num=(strlen(strfrom)-1)/len + 1; // modify 5的整数倍
while(i <num)
{
get_char(strrec[i],strfrom+len*i,len);
++i;
}
//return str[100]; // 返回临时对象很危险
}
// modify
void print(char str[10][10], int count)
{
for (int i=0; i <count; ++i)
{
cout < < str[i] < < endl;
}
}
void main()
{
int i=0;
int n=5;
char str1[10][10]={ " "}; // modify
char str2[255]= "abcdefghigklnmopqrstuvwxyz ";
buff(str1,str2,5);
print(str1, (strlen(str2)-1)/n + 1); // modify
}
------解决方案--------------------
不需要 get_char函数 !! 直接在buff函数里转换就可以了!
char *buff(char *string,char straim[100][100],int n)
{
int len;
int i =0, j =0;
len=strlen(string)/n;
for(i=0;i <len+1;i++)
{
for(j = 0; j < len ; j++)
{
straim[i][j] = string[j+i*(len)];
printf( "%c ",straim[i][j]);
if( j == (len-1) )
{
printf( "\n ");
}
}
}
return straim[100];
}
void main()
{
int i=0;
int n=5;
char str[255]= "abcdefghigklnmopqrstuvwxyzabcdertuiop ";
char str1[100][100] = {0};
printf( "%s ",buff(str,str1,n));
}