[SOLUCIONADO] Dos dudas en C

Iniciado por marcoam, Noviembre 16, 2013, 10:37:29 AM

Tema anterior - Siguiente tema

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

Noviembre 16, 2013, 10:37:29 AM Ultima modificación: Agosto 20, 2014, 08:58:20 PM por Expermicid
Hola muy buenas compañeros he empezado a aprender C y me ha surgido una duda:

La primera es que he creado una estructura

Código: c
struct empleados{
     char nombre[50];
     int dni;
     int sueldo;
}empleado;


Y el problema es que al hacer fgets a un archivo uno de los datos pasa a una variable definida en el main llamada tambien char nombre [50] y cuando quiero pasar los datos recogidos en nombre a empleados.nombre me pone error: incompatyble types when asigning 'char [50]' from *char

La segunda duda es que cuando quiero definir una funcion en la que me piden como parametros un puntero que hace fopen a un archivo y otro parametros qie es struct
es readUsers(char file[],struct User users[])
Aqui el problema es que no se como pasar los parametros porque en file[] no se si poner solo el punter  o file[puntero] ni se como usarlo dentro de la funcion , y la struct me confunde lo de Users user si me podeis  poner un ejemplo.lo entenderia mejor Muchas gracias de antemano si os parece dudoso mi forma de explicarme decidmelo e intentare explicarme mejor que ahora estoy en el movil y no puedo escribir bien

Noviembre 16, 2013, 10:49:48 AM #1 Ultima modificación: Noviembre 16, 2013, 10:56:03 AM por Juan
Usa esta funcion para pasar datos nombre a empreado.nombre:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Código: c
strcpy((char*)empleado.nombre,(char*)nombre);


De todas formas te recomiendo que leas directamente a empleado.nombre envez de leer nombe y luego copiarlo:

Código: c
#include <stdio.h>

struct Empleado
{
    char Nombre[50];
    int DNI;
    int Sueldo;
};

int main()
{
    struct Empleado usuario;

    printf("Nombre: ");
    scanf("%s",usuario.Nombre);

    printf("El nombre del empreado es %s\n",usuario.Nombre);

    return 0;
}


La segunda:

Código: text
funcion(FILE * handle,struct empreado usuario)


Y como tendria que hacer para usar los parametros dentro de las llaves dentro de la funcion al dwfinirla
Como aun soy novato me confunden los [ ]

Como que los parametros dentro de las llaves? las llaves indican que es un array. Para ver lo que contiene x posicion del array solo tienes que hacer array[posicion] ej array[0] te devuelve el primer elemento del array.

Pon el codigo que tienes y di que es lo que no sabes en el codigo que te vamos a entender mejor.


Noviembre 16, 2013, 01:08:55 PM #4 Ultima modificación: Febrero 08, 2014, 04:37:22 PM por Expermicid
me refiero a cuando la defines yo de momento solo tengo

Código: c
int ReadUsersFromFile([color=yellow]char file[],struct usuarios users[][/color]){
   
    [color=red]file[][/color]=fopen("datos_usuarios.dat","r");
   
}


esto es lo que no se usar  :P

No puedes llamar a una variable de la misma forma que un parametro de la funcion, por otra parte para pasar cadenas a funciones no es char variable[] es char * variable.

Con fopen lo que te retorna es un handle tipo FILE por eso esa linea seria asi: FILE * archivo = fopen("datos_usuarios.dat","r");

un saludo!

Noviembre 16, 2013, 01:54:15 PM #6 Ultima modificación: Febrero 08, 2014, 04:37:35 PM por Expermicid
Ya entiendo solo una ultima pregunta, tengo un struct creado y quiero pasarlo como segundo parametro de una funcion al invocarla desde el main()

Código: c
typedef struct{
    char nombre[10];
    char clave[8];
    int id;
    int permisos;
    int numero_de_usuario;
}User;

int readUsersFromFile(char* file, [color=red]struct User users[][/color]){
   
   
}

main(){
FILE*datos=fopen("datos_usuarios.dat","r");
readUsersFromFile(datos, [color=red]no se que tengo que poner aqui[/color]);
}


No se como debo hacer para invocar la funcion con el struct User como parametro. Gracia :)

Andas muy verde,,, tu codigo seria mas o menos asi:

Código: c
typedef struct{
    char nombre[10];
    char clave[8];
    int id;
    int permisos;
    int numero_de_usuario;
}User;

int readUsersFromFile(char* file, struct User users){
   
   
}

main(){
struct User usuario;
FILE*datos=fopen("datos_usuarios.dat","r");
readUsersFromFile(datos, usuario);
}


Te recomiendo que te leas esto antes de hacer mas preguntas  :)

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Veras como te soluciona muchas dudas!