实验十—指针2

/*输入一个字符串和一个正整数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)!='') /*把字符串拷贝给*c1;''表示结束,不然字符串没有结束符不对*/     
    {
        j++;
    }     
    for(i=j-x;i<j;i++) /*循环x次取字符串的后x个字符*/     
    {
        temp[k]=*(c1+i);  /*将后x个字符储存到临时数组中*/  
        k++;
    }     
    temp[k]='';    
    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)!='') /*把函数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.临时数组在两个函数之间不能通用。

原文地址:https://www.cnblogs.com/xym0914/p/3422694.html