Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa C no se ejecuta correctamente

Estas en el tema de Programa C no se ejecuta correctamente en el foro de C/C++ en Foros del Web. Aunque no me da error al compilar el programa no se ejecuta correctamente. El problema creo que esta al pasar una estructura o un archivo ...
  #1 (permalink)  
Antiguo 26/11/2011, 18:00
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Programa C no se ejecuta correctamente

Aunque no me da error al compilar el programa no se ejecuta correctamente. El problema creo que esta al pasar una estructura o un archivo por referencia.
La estructura es:
Código:
struct estructura
{
    char dato1[10];
    char dato2[20];
    int dato3;
}vector_estructura[20];
La invocación a la función desde main:
Código:
int n=0;
    struct estructura vector_estructura[20];
    FILE *fichero;
funcion(vector_estructura,&n,fichero);
Y la función:
Código:
void funcion (struct estructura *vector_estructura, int *n, FILE *fichero)
{
    fe=fopen("archivo.dat","w");
    printf("Escribe el dato1  del empleado: ");
    scanf("%s",*vector_estructura[*n].dato1);
    printf("Escribe el dato2bre del empleado");
    scanf("%s",*vector_estructura[*n].dato2);
    printf("Escribe el dato2bre del empleado");
    scanf("%d",vector_estructura[*n].dato3);
    fprintf(fe,"%s \n%s \n%d",vector_estructura[*n].dato1,vector_estructura[*n].dato2,vector_estructura[*n].dato3);
    fclose(fe);
    *n++;
}
Alguien me sabría decir donde está el error?
  #2 (permalink)  
Antiguo 26/11/2011, 19:58
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Programa C no se ejecuta correctamente

Prueba con las modificaciones que hice. Cambie lso scanf....estabas pasando mal las referencias.

una variable definida asi:
char cadena[100];
Si usa la variable cadena sin usar los cochetes, es un puntero a char, asi que no necessita uso de * o & para ser usada en el scanf.

En cambio un puntero si necesita del operador & que devuelve la ubicacion en memoria del puntero.

Espero que se entienda la explicacion!
Código C++:
Ver original
  1. void funcion (struct estructura *vector_estructura, int *n, FILE *fichero)
  2. {
  3.     fe=fopen("archivo.dat","w");
  4.     printf("Escribe el dato1  del empleado: ");
  5.     scanf("%s",vector_estructura[*n].dato1);
  6.     printf("Escribe el dato2bre del empleado");
  7.     scanf("%s",vector_estructura[*n].dato2);
  8.     printf("Escribe el dato2bre del empleado");
  9.     scanf("%d",&(vector_estructura[*n].dato3));
  10.     fprintf(fe,"%s \n%s \n%d",vector_estructura[*n].dato1,vector_estructura[*n].dato2,vector_estructura[*n].dato3);
  11.     fclose(fe);
  12.     *n++;
  13. }
  #3 (permalink)  
Antiguo 27/11/2011, 06:27
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Programa C no se ejecuta correctamente

Muchas gracias. Ya me funciona correctamente este parte.
  #4 (permalink)  
Antiguo 27/11/2011, 06:55
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Programa C no se ejecuta correctamente

Ahora el problema que tengo es que cada vez que escribo una serie de datos nueva en el archivo me los escribe siempre en la misma línea aunque ponga el \n.
  #5 (permalink)  
Antiguo 27/11/2011, 08:27
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Programa C no se ejecuta correctamente

Leiste la descripcion de los modos para abrir un archivo??

"w": Create an empty file for writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.
"a" Append to a file. Writing operations append data at the end of the file. The file is created if it does not exist.

Con "W" creas un archivo nuevo, borrando el otro. Con "a" lo abris para agregar al final. Saludos
  #6 (permalink)  
Antiguo 27/11/2011, 08:46
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Programa C no se ejecuta correctamente

Ya le había cambiado la w por a. El problema es que escribe siempre en la misma línea.
  #7 (permalink)  
Antiguo 27/11/2011, 15:09
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Programa C no se ejecuta correctamente

Si abres el archivo con un editor de windows, vas a ver todo en la misma linea porque estos programas toman como nueva linea a los siguiente caracteres "\r\n". En cambio en linux solo es el \n.
  #8 (permalink)  
Antiguo 27/11/2011, 15:11
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Programa C no se ejecuta correctamente

Y no hay alguna forma de hacer que salte de línea en windows?
Edit: lo conseguí con un fputc con un \n.

Última edición por Arcangel13; 27/11/2011 a las 16:07

Etiquetas: correctamente, ejecuta, funcion, programa, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:13.