¿cual es el error?

Iniciado por asdavid, 22 Noviembre 2012, 12:51 PM

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

asdavid

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;
}

C_1^N

validar_nombre(i.nombre)
{
    printf("1");
    return;
}

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

Saludos!
La gestión manual de bloques de memoria en C es como hacer malabarismos con pastillas de jabón en la ducha de la prisión: todo diversión hasta que cometes un fallo

rir3760

Cita de: asdavid en 22 Noviembre 2012, 12:51 PMestoy 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:
validar_nombre(i.nombre)
{
   printf("1");
   return;
}

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:
int validar_nombre(char nombre[])
{
   /* Alguna operacion, por ejemplo: */
   printf("%s\n", nombre);
   
   return 1; /* O algun otro valor apropiado para el caso*/
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

asdavid

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

rir3760

Cita de: 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*'
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:
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language