copiar cadenas

Nahira
07 de Marzo del 2006
Hola, estoy haciendo un programa en C que copie una cadena en otra. Me da un error que no consigo ver en la linea 8, en el void main(). Aqui os pongo el codigo.

#include <stdio.h>
#include <conio.h>

#define MAX_VALOR 20

char copiarcadenas(char[],char[])

void main()
{
char cadenaorigen[MAX_VALOR];
char cadenadestino[MAX_VALOR];

//borramos la pantalla
clrscr();

//pedimos la cadena de origen
printf("nIntroduzca la cadena que desea copiar:n");
scanf("%s",cadenaorigen);

if(cadenaorigen>cadenadestino)
{
prinf("nLa copia no puede realizarse ya que se pierden datosn");
}
else
{
cadenaorigen = copiarcadenas(cadenadestino);

printf("nLa cadena 2 sera:%sn",cadenadestino);
}
getchar();



}

char copiarcadenas(char cadenaorigen[],char cadenadestino[])
{
int contador=0;

while (cadenaorigen[contador] != '')
{
contador++;
cadenadestino[contador]=cadenaorigen[contador];
}

return contador;
}

Tampoco me queda claro si para copiar las cadenas se haria así y en el caso de que sea asi que el if-else este bien hecho, sobretodo la parte que llamo a la función desde el else.
Espero que me podais echar una mano.
Muchas gracias!

Noel Solw
07 de Marzo del 2006

/*

Privacidad: Recuerde que la informaci?n escrita en los foros de programaci?n es 100% p?blica y que su ip ser? registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisi?n y eliminaci?n.

copiar cadenas
Enviado por Nahira el d?a 4 de marzo de 2006
Hola, estoy haciendo un programa en C que copie una cadena en otra.
Me da un error que no consigo ver en la linea 8, en el void main().
Aqui os pongo el codigo.

*/

#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAX_VALOR 20

void copiarcadenas(char[],char[]); // faltaba el punto y coma

void main()
{
char cadenaorigen[MAX_VALOR],
cadenadestino[MAX_VALOR] = "...................",
// para que no falle el if(strlen()....
str[MAX_VALOR];
//borramos la pantalla
clrscr();

//pedimos la cadena de origen
printf("nIntroduzca la cadena que desea copiar : ");
scanf("%s",cadenaorigen);

if(strlen(cadenaorigen) > strlen(cadenadestino))
// superfluo, definiste las dos cadenas de longitudes iguales
// hay que usar la guncion strlen() para hallar las longitudes
printf("nLa copia no puede realizarse ya que se pierden datosn");
else
{
copiarcadenas(cadenadestino,cadenaorigen);
printf("nLa cadena 2 sera : %sn",cadenadestino);
}
strcpy(str,cadenaorigen);
printf("n usando strcpy() : %s n",str);
getchar();
}

void copiarcadenas(char cadenadestino[],char cadenaorigen[])
{
for(int contador=0;cadenaorigen[contador] != '';contador++)
cadenadestino[contador] = cadenaorigen[contador];
cadenadestino[contador] = 0; // fin de la segunda cadena
}

/*
Tampoco me queda claro si para copiar las cadenas se haria as? y en el caso de que sea asi que el if-else este bien hecho, sobretodo la parte que llamo a la funci?n desde el else.
Espero que me podais echar una mano.
Muchas gracias!
Efectivamente, hay una funcion que copia cadenas, strcpy(), te puse un ejemplo
*/



Edgarin
07 de Marzo del 2006
Si estan incluyendo string.h, pues usenlo:

void copiarcadena(char cad1[],char cad2[])
{strcpy(cad1,cad2);
}

ivo
07 de Marzo del 2006
A mi forma de ver en la linea 8 (donde esta el main) te falto poner la palabra reservada void, algo asi:

void main(void) // asi le dices al compilador
// que main no tiene parametros

las cadenas las puedes copiar con la funcion strcpy()