Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] problemi con malloc

    ciao a tutti, un esercizio di laboratorio mi chiedeva realizzare un programma che simuli la gestione di prodotti nei supermercati, un semplice programma con lettura da file dei dati registrazione in una lista. Il problema è che il mio compilatore mi da questo errore : "warning: incompatible implicit declaration of built-in function ‘malloc’" nella riga 23, nn riesco a capire cosa ho sbagliato, a me sembra tutto giuto, eppure c'è qualcosa che nn va, spero possiate aiutarmi, grazie in anticipo.

    codice:
    # include <string.h>
    # include <stdio.h>
    
    typedef struct lista {
    	char store[128];
    	char code[8];
    	int quantity;
    	struct lista* next;
    	} *listapnt;
    
    void main(){
    	listapnt pntlista;
    	listapnt lastinlista;
    	listapnt cerca;
    	listapnt lastcerca;
    	FILE *s;
    	char sname[128];
    	char temp[128];
    	char command;
    	char icode[8];
    	int iquantity;
    
    	pntlista=(listapnt)malloc(sizeof(struct lista));
    	pntlista->next=NULL;
    	cerca=(listapnt)malloc(sizeof(struct lista));
    	lastcerca=(listapnt)malloc(sizeof(struct lista));
    
    	s=fopen("items.txt","R");
    	while(fscanf(s,"%s",temp)!=EOF){
    		if(strlen(temp)!=8){
    			strcpy(sname,temp);
    		}
    		else{
    			lastinlista=(listapnt)malloc(sizeof(struct lista));
    			strcpy(pntlista->store,sname);
    			strcpy(pntlista->code,temp);
    			fscanf(s,"%d",&pntlista->quantity);
    			lastinlista->next=pntlista->next;
    			pntlista->next=lastinlista;
    		}
    	}
    	fclose(s);
    
    	do{
    		printf("\n insert the operation code");
    		scanf("%c",&command);
    		switch (command){
    			case 'L':{
    				printf("\n insert the item code:");
    				scanf("%s",icode);
    				printf("\n insert the quantity");
    				scanf("%d",&iquantity);
    				cerca->next=lastinlista;
    				lastcerca->next=lastinlista->next;
    				while(cerca->next!=NULL){
    					if((strcmp(lastcerca->code,icode)==0)&&(lastcerca->quantity >= iquantity)){
    						printf("\n %s",lastcerca->store);
    					}
    					lastcerca=lastcerca->next;
    					cerca->next=lastcerca;
    				}
    				break;
    			}
    			case 'U':{
    				printf("\n insert the item code:");
    				scanf("%s",icode);
    				printf("\n insert the quantity");
    				scanf("%d",&iquantity);
    				printf("\n insert the store name");
    				scanf("%s",sname);
    				cerca->next=lastinlista;
    				lastcerca->next=lastinlista->next;
    				while(cerca->next!=NULL){
    					if((strcmp(lastcerca->code,icode)==0)&&(strcmp(lastcerca->store,sname)==0)){
    						if(iquantity>=0){
    							lastcerca->quantity=lastcerca->quantity+iquantity;
    						}
    						else{
    							iquantity=iquantity*(-1);
    							if(lastcerca->quantity>=iquantity){
    								lastcerca->quantity=lastcerca->quantity-iquantity;
    							}
    						}
    					}
    					lastcerca=lastcerca->next;
    					cerca->next=lastcerca;
    				}
    				break;
    			}
    		}
    	}while(command!='Q');
    	printf("\n exiting");
    	s=fopen("item.txt","W");
    	strcpy(sname,lastinlista->store);
    	fprintf(s,"%s \n",lastinlista->store);
    	while (pntlista->next!=NULL){
    		if(strcmp(lastinlista->store,sname)==0){
    			fprintf(s,"%s %d \n",lastinlista->code ,lastinlista->quantity);
    		}
    		else{
    			strcpy(sname,lastinlista->store);
    			fprintf(s,"%s \n",lastinlista->store);
    		}
    		lastinlista=lastinlista->next;
    		pntlista->next=lastinlista;
    	}
    	fclose(s);
    }

  2. #2
    scusate, ho già risolto da solo, mancava semplicemente #include <stdlib.h> -.-! sorry

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.