()
Newbie
Messaggi:
Iscritto:
|
Salve a tutti oggi ho provato a realizzare un modestissimo programma su linux lo compilo ed è perfetto, gira che è una meraviglia e fin qui tutto normale... però appena lo compilo per winzoz non mi funziona più, o meglio mi compila ma appena lo eseguo da un comportamento completamente anomalo!... cosa può essere??.. il sorgente è questo:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> struct list_t{ int intero; struct list_t *next; }; typedef struct list_t list_t; list_t * list_alloc(list_t *list, int i); void list_print(list_t *list); int main (int argc, char *argv[]) { list_t *list; int i; printf("Inserisci numero di elementi\n"); scanf("%d", &i); list = list_alloc(list, i); list_print(list); } list_t * list_alloc(list_t *list, int i){ int j; list_t *head; list = (list_t *)malloc(sizeof(list_t)); printf("inserisci numero\n"); scanf("%d", &list -> intero); head = list; for(j =0; j<i-1; j++){ list -> next = (list_t *)malloc(sizeof(list_t)); list = list -> next; printf("inserisci numero\n"); scanf("%d", &list -> intero); } list = NULL; return head; } void list_print(list_t *list){ while(list){ printf("elemento: %d\n", list -> intero); list = list -> next; } }
|
|
|
Xaratroom (Ex-Member)
Expert
Messaggi: 526
Iscritto: 03/04/2008
|
Non funziona perché:
Il cervello è come un paracadute...... funziona solo se si apre. |
Prova concentrarti un attimo su list_alloc.
PS: Si chiama windows e non winzoz |
|
()
Newbie
Messaggi:
Iscritto:
|
si lo so che si chiama windows ma non mi sta cosi tanto simpatico... comunque cos'ha di strano list_alloc???? su linux funziona benissimo senza problemi....
|
|
GuglielmoS (Ex-Member)
Pro
Messaggi: 114
Iscritto: 27/11/2009
|
Postato originariamente da giovybus:
si lo so che si chiama windows ma non mi sta cosi tanto simpatico... comunque cos'ha di strano list_alloc???? su linux funziona benissimo senza problemi.... |
Il problema come ti è stato detto è nella list_alloc...
Infatti il parametro list devi passarlo come "puntatore di puntatore a list_t", e una volta finito il caricamento della lista devi settare a NULL l'elemento successivo all'ultimo.
Codice sorgente - presumibilmente C/C++ |
list_t *
list_alloc(list_t **list, int i){
// sistema te il resto della funzione
...
(*list)->next = NULL;
return head;
}
|
|
|
()
Newbie
Messaggi:
Iscritto:
|
però perché su linux funziona??...
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
Postato originariamente da giovybus:
però perché su linux funziona??... |
Su Linzozz appare funzionante, ma quello che succede in memoria non viene rilevato ...
Direi che Windows si è comportato molto meglio ...
Impariamo a rispettare ciò che non conosciamo ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
()
Newbie
Messaggi:
Iscritto:
|
Ci mancherebbe... però la cosa strana è che all'università il prof ci fa fare sempre cosi come ho scritto io... per questo mi è sorto il dubbio!..
Capite??.. con le liste non ci ha mai fatto vedere puntatori di puntatori a liste...
|
|
GuglielmoS (Ex-Member)
Pro
Messaggi: 114
Iscritto: 27/11/2009
|
Postato originariamente da giovybus:
Ci mancherebbe... però la cosa strana è che all'università il prof ci fa fare sempre cosi come ho scritto io... per questo mi è sorto il dubbio!..
Capite??.. con le liste non ci ha mai fatto vedere puntatori di puntatori a liste... |
Magari utilizzava il C++, e nella firma del metodo aveva messo '&' al posto del secondo '*' (a scuola da me le liste sono state spiegate con questo metodo). Ultima modifica effettuata da GuglielmoS il 30/06/2010 alle 18:35 |
|
()
Newbie
Messaggi:
Iscritto:
|
No no usa il C perchè stiamo facendo questo come materia, mmha!.. chiederò al tutor allora se mi sa dire qualcosa perché tra una settimana ho l'esame e oggi sono troppo confuso con questa storia che si è sollevata!!...
|
|