Hola muy buenas compañeros he empezado a aprender C y me ha surgido una duda:
La primera es que he creado una estructura
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
Usa esta funcion para pasar datos nombre a empreado.nombre:
http://www.cplusplus.com/reference/cstring/strcpy/
strcpy((char*)empleado.nombre,(char*)nombre);
De todas formas te recomiendo que leas directamente a empleado.nombre envez de leer nombe y luego copiarlo:
#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:
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.
me refiero a cuando la defines yo de momento solo tengo
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!
Ya entiendo solo una ultima pregunta, tengo un struct creado y quiero pasarlo como segundo parametro de una funcion al invocarla desde el main()
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:
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 :)
http://www.elrincondelc.com/cursoc/cursoc.html
Veras como te soluciona muchas dudas!