Como copiar una cadena a otra crarcter por caracter

Iniciado por lokecolinUAM, 12 Julio 2012, 08:02 AM

0 Miembros y 1 Visitante están viendo este tema.

lokecolinUAM

Es simple tengo que realizar un programa que intercambie una cadena a otra, si ya se "strcpy"
Pues no se me pide que solo utilice ciclos y cadenas y asi.
por farvor es para dentro de unas horas!!!!

DickGumshoe

¡Hola!

Puedes hacerlo con un bucle for. Recorres la primera cadena y vas asignándole cada carácter a la cadena2.

Si tienes alguna duda pregunta  :D

Saludos!

lokecolinUAM

c   char  A[MAX];
    char  B[MAX];
    int x;
    printf (" Nombre A : ");
    fgets(A,MAX,stdin );
    for(x=0;x<MAX;x++)
    {
            if(A
  • !='\0')
                              B
  • ==A
  • ;
                else(A
  • =='\0')
                              B
  • =='\0';         
        }
     
        printf ("El nombre A es:  \" %s\"\n"  ,A);

        printf ("El nombre B  es:  \" %s\"\n" ,B);
       
       
        /*printf("Al realizar ek intercambio de cadenas:\n\n\n");
        printf ("El nombre A es: \" %s\"\n\n"  ,A);
        printf ("El nombre B es: \" %s\"\n"  ,B);*/
       
     
        system("pause");
        return 0;
    }

lokecolinUAM

es lo que e tratado pero no funciona si corre pero no me copia
y se supone que el operador asignacion no se puede utilizar para esto pero entonces como
???????????


help!!!!

DickGumshoe

#4
En el bucle for esta condición sobra:

if(A!='\0')

ya que indicas que recorres la cadena hasta MAX-1, y el '\0' está en MAX. (A parte de que para recorrer una cadena debes poner el subíndice (el [])...)

Las cadenas no se pueden copiar usando el operador de asignación (y mucho menos el de comparación, que es el que has usado).

Normalmente las cadenas se copian con strcpy(), pero como el ejercicio pide que no uses esa función, pues con el bucle for. Así, vas recorriendo cada carácter de la cadena: cadena[0], cadena[1] ... cadena[MAX-1]; y asignando el carácter a la otra cadena. Así:


for(i=0;i<MAX;i++)
{
  B[i] = A[i];
}
B[MAX] = '\0';



Saludos!

lokecolinUAM