2011-10-14 4 views
-4

Imこのエラーを表示する:ネストされた機能は無効になっています。 ?ネストされた機能が無効になっていて、再度有効にするには-fnested-functionsを使用してください

これは、クライアントと販売のリストを作成するプログラムです。それはあなたがbusca_cliente()の最後に閉じ括弧が欠落しているクライアントを見つけ、それらを消去し

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
#include "clientes.h" 


int ordena(LISTA1 *inicio,LISTA1 *aux,LISTA1 *nodo,LISTA1 *aux2); 
int agrega_cliente(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2); 
int busca_cliente(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2,LISTA2   *inicioventas,LISTA2 *auxventas,LISTA2 *nodoventas,LISTA2 *aux2ventas); 
extern void agrega_nombre(); 
int main(void) 
{ 
int menu,pops=0; 
LISTA1 *inicio, *aux,*nodo, *aux2; 
inicio=NULL; 
aux=inicio; 
LISTA2 *inicioventas, *auxventas,*nodoventas, *aux2ventas; 
system("clear"); 
    //funcion void carga_datos(); 
ordena(inicio,aux,nodo,aux2); 

printf("TIENDA DEPARTAMENTAL\n\n\n"); 
    printf("1. Agregar a un Cliente.\n2. Agregar una venta.\n3. Buscar Cliente. \n4. Borrar  Cliente. \n5. Borrar una venta. \n6. Salir."); 
printf("\n\nElige una opcion: "); 
    scanf("%d", &menu); 
switch(menu) 
{ 
case 1: 
    system("clear"); 
    printf("opcion1\n"); 
     agrega_cliente(inicio,aux,nodo,aux2); 

    break; 
    case 2: 
    system("clear"); 
    printf("opcion2\n"); 
    break; 
case 3: 
    system("clear"); 
    printf("opcion3\n"); 

     busca_cliente(inicio,aux,nodo,aux2,inicioventas, auxventas, nodoventas, aux2ventas); 
     puts(aux2->nombre); 

    break; 
case 4: 
    system("clear"); 
    printf("opcion4\n"); 
    break; 
case 5: 
    system("clear"); 
    printf("opcion5\n"); 
    break; 
case 6: 
    system("clear"); 
    printf("opcion6\n"); 
    break; 
} 
} 

///Funcion Busqueda 
int busca_cliente(LISTA1 *inicio, LISTA1 *aux,LISTA1 *nodo,LISTA1 *aux2,LISTA2 *inicioventas,LISTA2 *auxventas,LISTA2 *nodoventas,LISTA2 *aux2ventas) 
{ 
    char nombrebusqueda[80]; 
int numclienteprueba; 
printf("Dame el nombre del cliente a buscar\n"); 
scanf("%s",nombrebusqueda); 
aux2=aux; 
while(aux2!=NULL) 
{ 
    if((strcmp(nombrebusqueda,aux2->nombre))==0) 
    { 
     puts(aux2->nombre); 
     ////////Buscamos la venta 
     aux2ventas=aux; 
     while(aux2ventas!=NULL) 
     { 
      numclienteprueba=aux2ventas->num_clienteventas; 
      if(numclienteprueba==aux2ventas->num_clienteventas) 
      { 
       printf("Wow"); 
     } 
     //////////// 
    } 
    aux2=aux2->sig; 
} 
} 

////////////////////////////////////////////Funcion Ordena 



int ordena(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2) 
{ 
char pruebaman[80],probaman[80];//nombres 
char pruebadireccion[150],probadireccion[150];//direccion 
int pruebanum_cliente,probanum_cliente;//numero de cliente 
aux2=aux; 
strcpy(pruebaman,aux2->nombre); 
strcpy(pruebadireccion,aux2->direccion); 
pruebanum_cliente=aux2->num_cliente; 
aux2=aux2->ant; 

do 
    { 

    strcpy(probaman,aux2->nombre); 

    if(pruebaman[0]<probaman[0]) 
    { 
     strcpy(pruebaman,aux2->nombre); 
     strcpy(pruebadireccion,aux2->direccion); 
     pruebanum_cliente=aux2->num_cliente; 
     aux2=aux2->sig; 
     strcpy(aux2->nombre,probaman); 
     strcpy(aux2->direccion,probadireccion); 
     probanum_cliente=aux2->num_cliente;  
    } 
    strcpy(pruebaman,aux2->nombre); 
    strcpy(pruebadireccion,aux2->direccion); 
    pruebanum_cliente=aux2->num_cliente; 

    aux2=aux2->ant; 


    printf("Ciclo\n\n"); 

} 
while(aux2!=NULL); 
aux2=aux; 
strcpy(pruebaman,aux2->nombre); 
aux2=aux2->ant; 
strcpy(probaman,aux2->nombre); 
if(pruebaman[0]<probaman[0]) 
    ordena(inicio,aux,nodo,aux2); 
} 



///////////////////////////////////////////////////////Agrega Cliente 
int agrega_cliente(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2) 
    { 

FILE *clientes; 
clientes=fopen("clientes.txt", "a+"); 
//fseek(clientes, 0L, SEEK_END); 

inicio=NULL; 
nodo=malloc(sizeof(LISTA1)); 
aux=malloc(sizeof(LISTA1)); 

if(nodo==NULL) 
{ 
    printf("No hay memoria\n"); 
    exit(1); 
} 
printf("NOMBRE: "); 
gets(nodo->nombre); 
printf("DIRECCION: "); 
gets(nodo->direccion); 
printf("NUMERO DE CLIENTE: "); 
scanf("%d", &nodo->num_cliente); 

if(inicio==NULL) 
{ 
    inicio=nodo; 
    inicio->sig=NULL; 
    inicio->ant=NULL; 
    aux=inicio; 
} 
else 
{ 
    aux->sig =nodo; 
    nodo->ant=aux; 
    aux=nodo; 
    nodo->sig=NULL; 
} 
nodo=malloc(sizeof(LISTA1)); 

aux2=inicio; 

while(aux2!=NULL) 
{ 
    fprintf(clientes, "%s\n", aux2->nombre); 
    fprintf(clientes, "%s\n", aux2->direccion); 
    fprintf(clientes, "%d\n", aux2->num_cliente); 
    puts(aux2->nombre); 
    puts(aux2->direccion); 
    aux2=aux2->sig; 
} 


aux2=aux; 
do 
{ 
    puts(aux2->nombre); 
    aux2=aux2->ant; 
} 
while(aux2!=NULL); 
fclose(clientes); 
    } 
+3

このコードは(意図的に)入れ子関数を使用していますか?大括弧のインデントと配置は、私が言うことさえできないほど無計画です。 –

+1

あなたのコードは読めません。一貫したインデントスタイルを使用してください:http://en.wikipedia.org/wiki/Indent_styleあなたのエディタがこれを行うことができます。チャンスは、インデントを修正する過程であなたの間違いを発見するでしょう。 – bdonlan

+0

このエラーの原因は、インデントの誤りです。 – aib

答えて

2

。どうやって見つけたのですか?私はあなたのコードをhttp://www.prettyprinter.de/module.php?name=PrettyPrinterに貼り付けて、読みやすいようにしました。

+0

Hahahahaええ、私は新しいコードをインデントするためにオーバーフローの方法をスタックする...しかし、私は周りに私の眼鏡を持っていない嫌い..非常にありがとう! – drodri420

関連する問題