/*输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出 字符串y;再对y串的内容前后倒置后存入数组z中并输出。 要求:用指针访问数组元素、用函 数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置*/ #include<stdio.h> #define N 100 void getx(char *c1); void getr(char *c2); void main() { char a[N]; puts("输入一个字符串:"); gets(a); /*从输入得到一个字符串*/ getx(a); /*同上*/ } void getx(char *c1) /*将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y*/ { int i,x,k=0; int j=0; char temp[N]; /*定义一个临时数组用来储存要拷贝的字符*/ puts("输入正整数x:"); scanf("%d",&x); while(*(c1+j)!='\0') /*把字符串拷贝给*c1;'\0'表示结束,不然字符串没有结束符不对*/ { j++; } for(i=j-x;i<j;i++) /*循环x次取字符串的后x个字符*/ { temp[k]=*(c1+i); /*将后x个字符储存到临时数组中*/ k++; } temp[k]='\0'; getr(temp); /*将临时数组中的字符串代入函数getr(char *c2)中实现倒置*/ puts("新的字符串是:"); puts(temp); } void getr(char *c2) /*对y串的内容前后倒置后存入数组z中并输出*/ { int j,k,i=0; char temp[N]; while(*(c2+i)!='\0') /*把函数getr(char *c1)中得到的临时数组中的变量赋给*c2*/ { i++; } for(j=0;j<i;j++) { temp[i-j-1]=*(c2+j);/*把*c2中的字符串赋给新的临时数组*/ } for(k=0;k<i;k++) /*实现倒置*/ { *(c2+k)=temp[k]; } }
*1.对如何倒置还不是很熟;
2.在复杂的转换过程中可以定义一个新的临时数组;
3.临时数组在两个函数之间不能通用。