用C++里面的copy函数,如何将一个二维数组S1复制到S2去
#include
char *strcat(char s1[],char s2[]) { // 数组法
int i,j,len1 = 0,len2 = 0;
for(i = 0;s1[i];i++) len1++;
for(i = 0;s2[i];i++) len2++;
for(i = len1,j = 0;i < len1 + len2;++i,++j)
s1[i] = s2[j];
s1[i] = '\0';
return s1;
}
void main() {
char s1[100] = "Visual C++ 2010 完全手册 ";
char s2[] = "ISO/ANSI C++ Windows";
printf("%s
%s
",s1,s2);
printf("
%s
",strcat(s1,s2));
}
strcpy(s2, s1)是把s1复制到s2,不是复制到s2后面。注意区别strcpy跟strcat。strcat才的加到后面。
#include<stdio.h>
#include<stdlib.h>
#define MAX_COL 3
#define MAX_ROW 4
void print(int * p,int iRow,int iCol)
{
int iR,iC;
printf("
");
for(iR=0;iR<iRow;iR++)
{
for(iC=0;iC<iCol;iC++)
{
printf("%d",*p);
p++;
}
printf("
");
}
}
void copy(int * pd,int * ps,int iSize)
{
int i;
for(i=0;i<iSize;i++)*pd++=*ps++;
}
void main()
{
int s1[MAX_ROW][MAX_COL],s2[MAX_ROW][MAX_COL];
int i,*p;
p=(int *)s1;
for(i=0;i<MAX_COL*MAX_ROW;i++)*p++=rand();
print((int *)s1,MAX_ROW,MAX_COL);
copy((int *)s2,(int *)s1,MAX_ROW*MAX_COL);
print((int *)s2,MAX_ROW,MAX_COL);
}
xoaxa兄也不错,提醒楼主,使用指针是可以考结构体的,要是你老实巴交的写,非累死不可。
这个容易啊, 就是std::copy(s1, s1+size, s2); 其中的size就是数据的长度,二维数组就是一个矩阵,size就是行x列。 给出一个简单的例子:
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
const int ROW = 3;
const int COL = 5;
int main(int argc, char** argv)
{
int s1[ROW][COL] = {
{10,11,12,13,14},
{20,21,22,23,24},
{30,31,32,33,34},
};
int s2[ROW][COL];
fill (&s2[0][0], &s2[0][0]+sizeof(s2)/sizeof(s2[0][0]),0);
copy (s1,s1+ROW*COL, s2);
for (int i = 0; i < ROW; i ++)
{
copy(s2[i], s2[i]+COL, ostream_iterator<int>(cout, " "));
cout << endl;
}
return 0;
}
/*
824 932 724 701 965
976 460 839 831 285
798 356 527 404 63
583 617 196 82 66
734 477 481 189 812
824 932 724 701 965
976 460 839 831 285
798 356 527 404 63
583 617 196 82 66
734 477 481 189 812
Press any key to continue
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#define N 5
#define M 5
void ArrCopy(int a[][N], int b[][N],int m) {
memcpy((char *)b, (char *)a, m * N * sizeof(int));
}
void Show(int a[][N],int m) {
for(int i = 0; i < m; ++i) {
for(int j = 0; j < N; ++j) {
cout.width(5);
cout << a[i][j];
}
cout << endl;
}
cout << endl;
}
int main() {
int a[M][N],b[M][N];
srand((unsigned)time(NULL));
for(int i = 0; i < M; ++i)
for(int j = 0; j < N; ++j)
a[i][j] = rand()%1000;
Show(a,M);
ArrCopy(a,b,M);
Show(b,M);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#define MAX_COL 3
#define MAX_ROW 4
void print(int * p,int iRow,int iCol)
{
int iR,iC;
printf("\n");
for(iR=0;iR<iRow;iR++)
{
for(iC=0;iC<iCol;iC++)
{
printf("%d\t",*p);
p++;
}
printf("\n");
}
}
void copy(int * pd,int * ps,int iSize)
{
int i;
for(i=0;i<iSize;i++)*pd++=*ps++;
}
void main()
{
int s1[MAX_ROW][MAX_COL],s2[MAX_ROW][MAX_COL];
int i,*p;
p=(int *)s1;
for(i=0;i<MAX_COL*MAX_ROW;i++)*p++=rand();
print((int *)s1,MAX_ROW,MAX_COL);
copy((int *)s2,(int *)s1,MAX_ROW*MAX_COL);
print((int *)s2,MAX_ROW,MAX_COL);
}
c++里不用copy,strcpy(s1,s2);
用C++里面的copy函数,如何将一个二维数组S1复制到S2去
void copy(int * pd,int * ps,int iSize){int i;for(i=0;i<iSize;i++)*pd++=*ps++;} void main(){int s1[MAX_ROW][MAX_COL],s2[MAX_ROW][MAX_COL];int i,*p;p=(int *)s1;for(i=0;i<MAX_COL*MAX_ROW;i++)*p++=rand();print((int *)s1,MAX_ROW,MAX_COL);cop...
C++ strcpy()怎么用??
C++的strcpy()用于字符串复制,用法是传入2个字符数组指针来执行,如strcpy(a,b)是将b指向的字符串复制到a指向的空间中。strcpy,即string copy(字符串复制)的缩写。strcpy是一种C语言的标准库函数,strcpy把含有'\\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。strcpy的原型声明是c...
c++ STL反转算法:reverse()、reverse_copy()详解
在C++的STL库中,反转算法主要通过两个函数实现:reverse函数模板与reverse_copy函数模板。reverse函数模板的操作流程如下:它需要两个双向迭代器作为源序列的边界。在内部循环中,它调用swap函数以交换源序列中的元素位置。当所有元素都交换完成后,源序列被反转。reverse函数模板的示例:对于一个包含5个元素...
C++strcpy函数的用法?
"你"是一个字符串存储它需要3个字节,不能存放到单字符的变量a中的。
C++问题,自己写了一个函数,copy(s,i,j)表示将字符串s从第i位取j个_百...
include<iostream>using namespace std;char *copy(char *s,int ii,int jj){int len = jj+1;\/\/长度,分配内存+1int d = ii;char *p = new char[len]; for(int c = 0;c<len;c++){ p[c] = s[d++];cout<<c<<endl;} p[len-1] = '\\0';\/\/结束符 return p;...
copyfileC++
函数CopyFile是C++中用于文件复制的函数,其功能类似于VB中的FileCopy命令。它的原型是:BOOL CopyFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);这个函数的主要任务是将指定的源文件(lpExistingFileName)内容复制到目标文件(lpNewFileName)中。它的返回值是一个BOOL...
strcpy在c语言中的用法
strcpy,即string copy(字符串复制)的缩写。strcpy是C++语言的一个标准函数,strcpy把含有'\\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。strcpy,计算机语言函数,是C语言的函数之一,来自C语言标准库,定义于string.h,它可以复制以null为退出字符的存储器区块到另一个存储器区块内。
c++中拷贝构造函数问题
这两个语句意思就是将拷贝对象P的X,Y的值赋值给本地对象的X,Y成员变量,达到利用已有对象给新对象直接赋值的操作;在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):1) 一个对象作为函数参数,以值传递的方式传入函数体;2) 一个对象作为函数返回值,以值传递的方式从函数...
c++ STL环移算法:rotate()、rotate_copy()详解
rotate_copy()函数模板的操作与copy()相同,但增加了一个输出迭代器参数,用于指向目的序列的开始。函数作用为在目标序列中复制源序列中指定范围的元素,并返回目标序列的输出迭代器,指向最后一个被复制元素的下一个位置。例如,对一个list容器执行rotate_copy操作时,需要使用系统函数advance来实现元素位置...
求c++ 中 copyFile()函数的使用,本人菜鸟
看msdn BOOL CopyFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName,BOOL bFailIfExists );第一个参数是要拷贝的文件路径,第二个参数是要拷贝到哪得路径,第三个参数是拷贝情况,true是如果路径上文件已存在,拷贝失败,false是如果路径有文件的话,将新文件覆盖旧文件 学学自己看msdn,那个英文很...