C语言平移函数 c语言的移位运算

c语言改错,要求实现数据平移。谢谢哈。

mov 函数中使用了指针 b,但未对它赋值,它指向的内存是未知的,因此出错。

创新互联专业为企业提供微山网站建设、微山做网站、微山网站设计、微山网站制作等企业网站建设、网页设计与制作、微山企业网站模板建站服务,十年微山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

要实现数据平移,比较简单的方法是先将它复制一份,再平移。这样, mov 函数可写为

void mov(int *x,int n,int m)

{

int *b, i, j;

b = (int *)calloc(n, sizeof(int));

if (b == NULL) {

printf("allocate memory failed!\n");

exit(0);

}

memcpy(b, x, n*sizeof(int));

for (i=0; in; i++) {

j = (i+n-m)%n;

x[i] = b[j];

}

free(b);

}

程序中用到了内存分配的函数及内存复制函数,因此需要包含 stdlib.h 和 string.h 库。

C语言数组平移问题

int a[8] = {xxxxxx};

int b[8];

int m;

int i, j = 0;

scanf("%d",m);

for(i = m;i8;i++)

{

b[j++] = a[i];

}

for(i = 0;im;i++)

{

b[j++] = a[i];

}

利用c语言怎样对bmp图像进行平移的操作?

位图平移没有这方面的库函数,必须自己来实现,下面是位图平移的参考代码:

#include "stdafx.h"

#includewindows.h

#includestdio.h

#includemath.h

int _tmain(int argc, _TCHAR* argv[])

{

int width;

int height;

RGBQUAD *pTableColor;

unsigned char *pBmpBuf1,*pBmpBuf2;

BITMAPFILEHEADER bfhead;

BITMAPINFOHEADER bihead;

//读出源图像的信息

FILE *fpr=fopen("E:\\picture\\dog.bmp","rb");

if(fpr==0)

return 0;

fread(bfhead,14,1,fpr);

fread(bihead,40,1,fpr);

width=bihead.biWidth;

height=bihead.biHeight;

int LineByte=(width*8/8+3)/4*4;

pTableColor=new RGBQUAD[256];

fread(pTableColor,sizeof(RGBQUAD),256,fpr);

pBmpBuf1=new unsigned char[LineByte*height];

fread(pBmpBuf1,LineByte*height,1,fpr);

fclose(fpr);

//将处理后的图像赋值为白色

pBmpBuf2=new unsigned char[LineByte*height];

for(int i=0;iheight;i++)

for(int j=0;jwidth;j++)

{

unsigned char *p;

p=(unsigned char*)(pBmpBuf2+LineByte*i+j);

(*p)=255;

}

//左右平移功能的实现

int t;

printf("请输入左平移或右平移的大小t(左移t0,右移t0):");

scanf("%d",t);

int k=abs(t);

printf("%d",k);

if(t0)

{

if(t=(-width))

{

for(int i=0;iheight;i++)

for(int j=0;j(width-k);j++)

{

unsigned char *p1,*p2;

p1=pBmpBuf1+LineByte*i+j+k;

p2=pBmpBuf2+LineByte*i+j;

(*p2)=(*p1);

}

}

}

else

{

if(t=width)

{

for(int i=0;iheight;i++)

for(int j=k;jwidth;j++)

{

unsigned char *p1,*p2;

p1=pBmpBuf1+LineByte*i+j-k;

p2=pBmpBuf2+LineByte*i+j;

(*p2)=(*p1);

}

}

}

//保存处理后的图像

FILE *fpw=fopen("dog.bmp","wb");

fwrite(bfhead,14,1,fpw);

fwrite(bihead,40,1,fpw);

fwrite(pTableColor,sizeof(RGBQUAD),256,fpw);

fwrite(pBmpBuf2,LineByte*height,1,fpw);

fclose(fpw);

return 0;

}


网站栏目:C语言平移函数 c语言的移位运算
转载源于:http://cdiso.cn/article/hjipgc.html

其他资讯