Manejo de apuntadores y cadenas en C++

#include<iostream>
#include<ctype.h>
#include<string>
void manejo1(char *,const char *);
void manejo2(char *,const char *,int);
using namespace std;


int main(){
    char cad1[25],*cad2="Acuerdo...amigo",cad4[]="LEY...enemigo";
    manejo1(cad1,cad2);
    int n=strlen(cad1);           // tamanho del arreglo cad1 después de copiar
    manejo2(cad1,cad4,n);    //copia cad4 en cad1 pero comenzando en la posición n
    cout<<cad1<<endl;


    system("pause");
   
    return 0;
}


void manejo1(char *s1,const char *s2){    /// esta función copia s2 en s1
     for(;(*s1=*s2)!='\0';s1++,s2++)  ;
}
void manejo2(char *s1,const char *s2,int n){ 
                              //copia s2 en s1 pero comenzando en la posición n


     s1+=n;                       // aquí se salta de la posición 0 a la posición n
     do{
           if(*s2=='L') *s1=' ';    // cuando encuentra una L la sustituye por espacio
           else
               if(*s2=='E'||*s2=='Y')  *s1=tolower(*s2); //encuentra E o Y las hace minúsculas
               else *s1=*s2;


           s1++;   // aumenta la posición del apuntador
           s2++;
     }while(*s2!='\0');


     *s1='\0';  // en el último le coloca el fin de línea
   
}

/// a continuación salida del programa
/// véase como hubo un sobre flujo en cad1 a pesar de tener sólo 25 de tamaño

Comentarios

Entradas populares de este blog

Prueba de Chi cuadrada para independencia y bondad de ajuste| Chi square Test in R

PYTHON, SERIE ARMÓNICA Y SERIE P

Programa de numero primo en C++ con funciones