UTNianos

Versión completa: Ayuda con C - Funciones de Cadena
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Gente, quería ver si alguno me podía dar una mano. No me gusta en general pedir ayuda con código, pero la verdad que ya googlié todo lo que podía y no le encuentro la vuelta =(

Tengo que hacer funciones de cadena para SSL (es decir, escribir yo lo que harían strlen, strcpy, strcat, etc.) y si bien me sale hacer cada función en un main, no me está saliendo llamar a la función. Les dejo mi código a ver si alguno me puede cachetear un poco para qué lado ir:

Spoiler: Mostrar
#include <stdio.h>
#include <string.h>
char concatenar (char cad1, char cad2)
int main ()
{
char cad1[30];
char cad2[30];
printf ("escriba la cadena1: ");
scanf ("%s",&cad1);
printf ("escriba la cadena2: ");
scanf ("%s",&cad2);
concatenar (cad1,cad2);
return 0;
}

char concatenar (char cad1, char cad2)
{
int i =0;
while (cad1[i] != '\0')
{
cad2[i] = cad1[i];
i++;
}
cad2[i] = '\0';
printf("la nueva cadena2 es: %s\n",cad2);
}

el error que me da cuando lo quiero compilar es:
Cita:C:\Borland\BCC55\Bin>bcc32 cadenas.c
Borland C++ 5.5.1 for Win32 Copyright © 1993, 2000 Borland
cadenas.c:
Error E2141 cadenas.c 4: Declaration syntax error
*** 1 errors in Compile ***

Desde ya, muchísimas gracias!
la funcion no tenes que definirla antes del main?
Hola capo... el error esta acá...

scanf ("%s",&cad1); // no hace falta el ampersand, porque el nombre del array es la direccion del mismo (que es lo que espera el scanf)... seria scanf ("%s",cad1); .... idem para el otro scanf.... y

concatenar (cad1,cad2); //llamada desde main, mandas las direcciones de inicio de cad1 y cad 2...
char concatenar (char cad1, char cad2) // fijate que vos mandas a la función concatenar las DIRECCIONES de inicio de cada string, como son direcciones vos tendrías que almacenarlas en PUNTEROS y como la función no retorna ningún valor no va CHAR delante del nombre, sino void.... quedaría...

void concatenar (char * cad1, char * cad2)
{
//lo que hace la función...
}

Espero que te ayude...
saludos!

En el prototipo tambien cambialo...

char concatenar (char cad1, char cad2) por y no te olvides del punto y coma....

void concatenar (char * cad1, char * cad2);

saludos!
Es lo q te dijo el de arriba, otro problemita es que te falta un punto y coma en la declaracion de la funcion concatenar

void concatenar (char * cad1, char * cad2);

Si queres poner & para el scanf tenes que ponerlo en la posicion 0:

scanf ("%s",&cad1[0]);

De la otra manera no, porque ya estamos hablando de una posicion de memoria.
Mil gracias!!! Me asombra (y asusta) todo lo que no tengo idea entonces.. =(

el profesor dijo: hagan funciones de cadena... y se ve que o algo no explicó, o yo tuve nacrolepsia

Nuevamente mil gracias a ambos, ahora me quedó más claro!

Slds,

BTW: me di cuenta recién que la llamé "concatenar" pero que hice "copiar"... claramente el problema debo ser yo =(
No hay problema capo! Buena suerte!

Saludos!
Si tu archivo .c es IGUAL al que pusiste en el 1er post, te falta un ';' en la declaración de tu función concatenar.
URLs de referencia