Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-01-2006, 22:50   #1
leadergl
Senior Member
 
Iscritto dal: May 2003
Messaggi: 1113
[C] Errore casuale, non esce sempre (urgente)

raga il compilatore Dev-C++ qualche volta mi fa uscire un errore e non so perchè....vi posto il codice ed il tipo di errore:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Inclusioni Gestione Struttura Dati
#include "struttura.h"


// Riempie la lista delle proprietà di ogni nodo
void RiempiListaProprieta(ListaProprieta *list, char *proprieta)
{
  int loop;
  char *array[50];
       
    // si posiziona sull'inizio delle proprietà
    proprieta=strchr(proprieta, '|')+1;

    array[0]=strtok(proprieta,"|");
    if(array[0]==NULL)
    {
        exit(0);
    }

    for(loop=1;loop<50;loop++)
    {
        // isolo la proprieta e la memorizzo in ARRAY[LOOP]
        array[loop]=strtok(NULL,"|");
        if(array[loop]==NULL)
            break;
        printf("Proprieta %d: %s\n",loop,array[loop]);
        // inserisco il valore della varie proprietà
        PushLista(list, array[loop]);                
    }
    printf("\n");
}


// Genera l'Albero della Tassonomia
AlberoTassonomia *GeneraAlbero(AlberoTassonomia *tree, char *dati, int figli, FILE *stream)
{
    int temp;   // serve a memorizzare il numero di figli di un nodo
    
    if (tree==NULL)
    {
        // creo nodo radice
        AlberoTassonomia *tree=(AlberoTassonomia *)malloc(sizeof(AlberoTassonomia));
        // inserisco dati nodo
        tree->categoria=separa(dati,0);
        //tree->categoria=strtok(dati,"|");
        printf("Inserisco Nodo: %s\n", tree->categoria);
        printf("Numero figli: %d\n", figli);

        // genera lista proprieta
        RiempiListaProprieta(tree->proprieta,dati);

        if (figli>0) //in realtà è  IF (FIGLI>NULL)
        {
            // Aggiungo il primo figlio
            AlberoTassonomia *nuovo=(AlberoTassonomia *)malloc(sizeof(AlberoTassonomia));
            nuovo=NULL;
            // Decremento il numero di figli rimanenti per questo nodo
            figli=figli-1;
            // Leggo le relative informazioni dal file
            dati=freadline(stream);
            // Richiamo la procedura collegando il figlio
            temp=dati[strcspn(dati,"|")+1]-48;
            tree->figlio=GeneraAlbero(nuovo, dati, temp, stream);
        } else {
            // Aggiungo il primo fratello
            if (dati=freadline(stream))
            {
                AlberoTassonomia *nuovo=(AlberoTassonomia *)malloc(sizeof(AlberoTassonomia));
                nuovo=NULL;
        
                temp=dati[strcspn(dati,"|")+1]-48;
                tree->fratelli=GeneraAlbero(nuovo, dati, temp, stream);
            }
        }            
    }
}


// Pulisce lo schermo
void clrscr()
{
	system("cls");
}


// Main del progetto
int main()
{    
    char *dest;
    int numeroletti, figliradice, scelta;
    FILE *file;
    AlberoTassonomia *albero=NULL;
    

  /*
    DEFINIZIONE MENU:
                1) intestazione: Gestione Tassonomia
                2) menu 1: Caricare tassonomia da file input
                3) menu 2: Salvare tassonomia su file input
  */
		clrscr();
        printf("\t\t\tGestione Albero Tassonomia\n\n");
		printf("\n1 - Inversione di una lista");
		printf("\n2 - Uscita");
		printf("\n\nInserire scelta: ");
		scanf("%d",&scelta);

		switch(scelta)
		{
			case 1: 
            {
               /*
                COME PROCEDERE:
                        1) Scrivere il menu
                        2) Leggere riga
                        3) Generare albero
               */
                clrscr();	
                file=fopen("infile.txt","r");
                if (file==NULL)
                    printf("Errore duranre l'apertura del file!");
                else
                {
                    // Legge il primo rigo del file
                    if(dest=freadline(file))
                    {                    
                        figliradice=dest[strcspn(dest,"|")+1]-48;
                        
                        albero=GeneraAlbero(albero, dest, figliradice, file);            
                    }
                }
            } 
            break; // fine CASE 1
			default:	
				break;
        } // fine SWITCH
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}
l'errore viene chiamato su queste righe (che sfruttano tutte la stessa funzione):
Codice:
1) dest=freadline(file)
2) dati=freadline(stream)
questo è il tipo di errore:
Quote:
C:\Documents and Settings\LeaderGL\Desktop\Progetto 1 LASD - Gruppo 18\main.c [Warning] assignment makes pointer from integer without a cast


questo è il codice della funzione in esame:
Codice:
// Legge sempre un rigo intero dal file e ritorna il rigo letto
char *freadline (FILE *f)
{
    char *row = NULL, *row_t = NULL;
    int ch, rowlen = 0, buflen = 0;
    int READLINE_EXTEND=128;

    while ((ch = fgetc (f)) != EOF)
    {
        if (rowlen >= buflen)
        {
            buflen = rowlen+READLINE_EXTEND;
            row_t = (char *) realloc (row, buflen);
            
            if (row_t == NULL)
                break;
        }
            
        row = row_t;

        if (ch != '\n')
            row[rowlen++] = (char) ch;
        else
            break;
    }

    if (row_t != NULL)
    {
        row[rowlen] = '\0';
    }
    else
    {
        free (row);
        row = NULL;
    }

    return row;
}

perchè quest'errore esce solo ogni tanto?
come lo risolvo? che sto sbagliando?
sicuro qualcosa coi puntatori...........

help me............
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC
leadergl è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 10:05   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da leadergl
l'errore viene chiamato su queste righe (che sfruttano tutte la stessa funzione):
Codice:
1) dest=freadline(file)
2) dati=freadline(stream)
questo è il tipo di errore:
C:\Documents and Settings\LeaderGL\Desktop\Progetto 1 LASD - Gruppo 18\main.c [Warning] assignment makes pointer from integer without a cast
Dove hai dichiarato la freadline???? Se nel momento in cui il compilatore trova una chiamata a freadline e non conosce ancora il suo prototipo, può avvenire il warning indicato sopra. Se una funzione non è dichiarata, il compilatore "pensa" che ritorni, per default, un int. Da qui il warning perché dest e dati sono char*.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2006, 14:34   #3
leadergl
Senior Member
 
Iscritto dal: May 2003
Messaggi: 1113
sei un genio, grazie mille
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC
leadergl è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Sale LAN, la Manovra 2027 introduce una ...
11 prezzi imperdibili in Amazon: non sol...
Giù i prezzi di Xiaomi 17T e Xiao...
Una tassa di 5,5 centesimi su ogni gigab...
Vuoi clonare un videogioco con l'IA? Cla...
Furto da 6,3 miliardi di dollari, Binanc...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Da zero al tracciato in secondi: LibreCo...
Il regista Rian Johnson lancia a 12,99 d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v