[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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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: php
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  :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Veras como te soluciona muchas dudas!