Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: asdavid en 22 Noviembre 2012, 12:51 pm



Título: ¿cual es el error?
Publicado por: asdavid en 22 Noviembre 2012, 12:51 pm
buenas!!
miren,estoy intentando pasar una cadena de caracteres o array,desde una estructura a una función,el compilador me da el siguiente error:
30 "conversion from `char*' to non-scalar type `nombre' requested "
codigo fuente:
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct dato
{char nombre[8];
};
int validar_nombre(struct dato);
int main()
{
            struct dato i;
            printf("Nombre:");
            scanf("%s",&i.nombre);
            validar_nombre(i.nombre);
}
validar_nombre(i.nombre)
{
                                  printf("1");
                                  return;
}


Título: Re: ¿cual es el error?
Publicado por: C_1^N en 22 Noviembre 2012, 15:19 pm
validar_nombre(i.nombre)
{
     printf("1");
     return;
}

el argumento deberia ser struct dato, o si queres pasarle la cadena char *

Saludos!


Título: Re: ¿cual es el error?
Publicado por: rir3760 en 22 Noviembre 2012, 16:54 pm
estoy intentando pasar una cadena de caracteres o array,desde una estructura a una función
La función no se distingue de cualquier otra que deba procesar una cadena almacenada en un array de caracteres (el primero es el contenido, el segundo el contenedor).

Tu función:
Código
  1. validar_nombre(i.nombre)
  2. {
  3.   printf("1");
  4.   return;
  5. }
Tiene varios errores como no indicar el tipo de retorno, no indicar el tipo del parámetro y omitir el valor de retorno de la función.

La definición debería ser:
Código
  1. int validar_nombre(char nombre[])
  2. {
  3.   /* Alguna operacion, por ejemplo: */
  4.   printf("%s\n", nombre);
  5.  
  6.   return 1; /* O algun otro valor apropiado para el caso*/
  7. }

Un saludo


Título: Re: ¿cual es el error?
Publicado por: asdavid en 23 Noviembre 2012, 10:54 am
ahora me da error en la linea del main en la que llamo a la funcion:
""validar_nombre(cnombre[6]);""
invalid conversion from `char' to `char*'
las cabeceras y el resto de codigo están corregidas,o eso creo


Título: Re: ¿cual es el error?
Publicado por: rir3760 en 23 Noviembre 2012, 15:13 pm
ahora me da error en la linea del main en la que llamo a la funcion:
""validar_nombre(cnombre[6]);""
invalid conversion from `char' to `char*'
El error se emite porque "cnombre[6]" es un elemento del array y es de tipo "char". Tu debes pasar la dirección en memoria del primer elemento del array, para ello basta con utilizar solo su nombre en la llamada:
Código
  1. validar_nombre(cnombre);
Y la próxima vez que actualices un programa y continúes con errores por favor publica su código fuente.

Un saludo