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
#include <stdio.h>
#include <string.h>
//crear un archivo de acceso secuencial, insertar los datos y luego leerlos, escribir y leer registros
int main()
{
FILE *fPtr;
char *op;
int cuenta;
char *nombre;
float saldo;
int sCuenta;
int rCuenta;
char *rNombre;
float rSaldo;
int ctaE = 0;
printf("Escriba escribir si desea escribir algo en un archivo, o leer si desea leer algo en un archivo: ");
scanf("%s",&op);
if(strcmp(op,"escribir")==0)
{
if((fPtr = fopen("archivo.txt","w")) == NULL)
{
printf("\nEl archivo no puede ser abierto para escritura");
}
else
{
printf("\nIngrese numero de cuenta, nombre y saldo en decimales (nnnn.nn) ");
printf("\nO Ingrese EOF para finalizar: ");
scanf("%d%s%f", &cuenta, &nombre, &saldo);
while(!feof(stdin))
{
fprintf(fPtr, "%d %s %.2f\n");
printf("?: ");
scanf("%d%s%f", &cuenta, &nombre, &saldo);
}
}
else //Este else marca error
{
if(strcmp(op,"leer")==0)
{
if((fPtr = fopen("archivo.txt","r")) == NULL)
{
printf("\nEl archivo no puede ser abierto para lectura");
}
else
{
printf("Ingrese un numero de cuenta: ");
scanf("%d",&sCuenta);
while(!feof(fPtr))
{
fscanf(fPtr, "%d %s %f", &rCuenta, &rNombre, &rSaldo);
if(sCuenta==rCuenta)
{
printf("Numero de cuenta encontrado:\n");
printf("\n%d %s %.2f", rCuenta, rNombre, rSaldo);
ctaE = 1;
}
}
if(ctaE == 0)
{
printf("\nEl numero de cuenta No Fue encontrado");
}
}
}
fclose(fPtr); //Marca error
scanf("%d",&cuenta); //Marca error
return 0;
}
Alguna ayuda por favor :silbar: Saludos
El error se genera porque una sentencia de selección "if" solo puede tener un bloque "else" y tu tienes dos:
if ((fPtr = fopen ("archivo.txt", "w")) == NULL){
/* ... */
}else {
printf ("\nIngrese numero de cuenta, nombre y saldo en decimales (nnnn.nn) ");
/* ... */
}else { //Este else marca error
if (strcmp (op, "leer") == 0) {
/* ... */
}
Un saludo