Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: traviatØ en 26 Octubre 2012, 16:32 pm



Título: Problema en codigo. Escritura y Lectura de un archivo secuencial
Publicado por: traviatØ en 26 Octubre 2012, 16:32 pm
Hola, sucede que estaba creando un programa que escriba y lea registros de un archivo de acceso secuencial, veo el codigo y no le veo errores, sin embargo al compilar el compilador me arroja los siguientes errores, ni idea de porque y son varios,

C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c: In function `main':
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:40: error: syntax error before "else"
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c: At top level:
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:70: warning: parameternames (withouttypes) in functiondeclaration
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:70: warning: data definition has no typeorstorageclass
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:72: error: syntax error beforestringconstant
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:72: error: conflictingtypesfor 'scanf'
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:72: note: a parameterlistwithanellipsiscan't match anemptyparameternamelistdeclaration
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:72: error: conflictingtypesfor 'scanf'
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:72: note: a parameterlistwithanellipsiscan't match anemptyparameternamelistdeclaration
C:\Dev-Cpp\escritura, lectura y busqueda de cuenta, secuencialmente.c:72: warning: data definition has no typeorstorageclass

Este es el codigo

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. //crear un archivo de acceso secuencial, insertar los datos y luego leerlos, escribir y leer registros
  4.  
  5. int main()
  6. {
  7.    FILE *fPtr;
  8.    char *op;
  9.    int cuenta;
  10.    char *nombre;
  11.    float saldo;
  12.    int sCuenta;
  13.    int rCuenta;
  14.    char *rNombre;
  15.    float rSaldo;
  16.    int ctaE = 0;
  17.  
  18.    printf("Escriba escribir si desea escribir algo en un archivo, o leer si desea leer algo en un archivo: ");
  19.    scanf("%s",&op);
  20.  
  21.    if(strcmp(op,"escribir")==0)
  22.    {
  23.       if((fPtr = fopen("archivo.txt","w")) == NULL)
  24.       {
  25.           printf("\nEl archivo no puede ser abierto para escritura");
  26.       }
  27.       else
  28.       {
  29.           printf("\nIngrese numero de cuenta, nombre y saldo en decimales (nnnn.nn) ");
  30.           printf("\nO Ingrese EOF para finalizar: ");
  31.           scanf("%d%s%f", &cuenta, &nombre, &saldo);
  32.  
  33.           while(!feof(stdin))
  34.           {
  35.           fprintf(fPtr, "%d %s %.2f\n");
  36.           printf("?: ");
  37.           scanf("%d%s%f", &cuenta, &nombre, &saldo);
  38.           }
  39.       }
  40.    else  //Este else marca error
  41.    {
  42.        if(strcmp(op,"leer")==0)
  43.        {
  44.           if((fPtr = fopen("archivo.txt","r")) == NULL)
  45.           {
  46.               printf("\nEl archivo no puede ser abierto para lectura");
  47.           }
  48.        else
  49.        {
  50.            printf("Ingrese un numero de cuenta: ");
  51.            scanf("%d",&sCuenta);
  52.  
  53.            while(!feof(fPtr))
  54.            {
  55.               fscanf(fPtr, "%d %s %f", &rCuenta, &rNombre, &rSaldo);
  56.               if(sCuenta==rCuenta)
  57.               {
  58.               printf("Numero de cuenta encontrado:\n");
  59.               printf("\n%d %s %.2f", rCuenta, rNombre, rSaldo);
  60.               ctaE = 1;
  61.               }
  62.            }
  63.            if(ctaE == 0)
  64.            {
  65.                printf("\nEl numero de cuenta No Fue encontrado");
  66.            }
  67.        }
  68.    }
  69.  
  70.    fclose(fPtr); //Marca error
  71.  
  72.    scanf("%d",&cuenta); //Marca error
  73.  
  74.    return 0;
  75. }

Alguna ayuda por favor  :silbar: Saludos


Título: Re: Problema en codigo. Escritura y Lectura de un archivo secuencial
Publicado por: rir3760 en 26 Octubre 2012, 17:17 pm
El error se genera porque una sentencia de selección "if" solo puede tener un bloque "else" y tu tienes dos:
Código
  1. if ((fPtr = fopen ("archivo.txt", "w")) == NULL){
  2.   /* ... */
  3. }else {
  4.   printf ("\nIngrese numero de cuenta, nombre y saldo en decimales (nnnn.nn) ");
  5.   /* ... */
  6. }else { //Este else marca error
  7.   if (strcmp (op, "leer") == 0) {
  8.   /* ... */
  9. }

Un saludo