Guarda che il programma funziona, e ne sono abbastanza sicuro perché lo compilato e provato
Gli errori erano percorso file, funziona sia la mia che la tua sintassi, è probabile che il percorso sia sbagliato, non puoi vedere il messaggio di errore visto che non metti nessuna pausa tra printf() e exit(), e il fatto che il nodo creato nel main, che tramite il tuo codice divverrà l'ultimo nodo della lista, non è inizializzato a zero, e quindi nodo->data ha valore indefinito.
FAMMI UN FAVORE...
controlla il percorso file, che secondo me non è corretto, per provare puoi mettere solo il nome file che ti verrà creato nella cartella progetto...
COMPILA il tuo codice con le correzioni e dimmi se va o no... PERCHE' A ME VA
codice:///Dichiaro e definisco il tipo Node typedef struct Node Node; struct Node{ int data; Node *prev; Node *next; }; #include <stdio.h> #include <stdlib.h> #include <time.h> void findBiggestNode(Node* node, FILE *infoFile); Node *addNode(Node *oldNode); ///Dichiaro una variabile globale che conterrà il nodo col dato più grande Node *biggestNode; int main() { int i; Node *node; FILE *info; node = malloc(sizeof(Node)); if(node == NULL){ printf("Error in memory allocation"); getchar();// SE NON METTI UNA PAUSA NON VEDRAI MAI IL MESSAGGIO exit(EXIT_FAILURE); } node->data=0; // DEVI INIZIALIZZARE IL NODO A ZERO, QUESTO SARA' L'ULTIMO NODO for(i = 0; i < 10; i++){ node = addNode(node); printf("%d\n", node->data); } info = fopen("c:\\users\\thisPC\\desktop\\nodeinfo.txt", "w"); if (info == NULL){ printf("Error while opening file."); getchar();// SE NON METTI UNA PAUSA NON VEDRAI MAI IL MESSAGGIO DI ERRORE exit(EXIT_FAILURE); } findBiggestNode(node, info); fclose(info); getchar();// PAUSA return 0; } ///Definizione di funzione di cerca del nodo col dato più grande void findBiggestNode(Node* node, FILE *infoFile){ ///Alloco memoria per la variabile globale biggestNode = malloc(sizeof(Node)); ///Assegno il minimo al nodo più grande biggestNode->data = 0; ///Ciclo che scorre la lista. Se l'elemento della lista considerato ha un valore più alto di biggestNode, allora memorizzo ///l'indirizzo dell'elemento della lista in biggestNode while(node != NULL){ if(node->data > biggestNode->data){ biggestNode = node; fprintf(infoFile, "Trovato nuovo valore massimo = %d\n\n", node->data); } ///Aggiorno la lista node = node->next; } } ///Funzione di costruzione della lista Node *addNode(Node *oldNode){ ///Dichiaro l'elemento della lista da collegare Node *newNode; ///Dò memoria al puntatore appena dichiarato newNode = malloc(sizeof(Node)); ///Assegno un numero casuale al campo data newNode->data = rand() % 10; ///Collego l'ultimo elemento in modo che sia inserito in testa alla lista oldNode->prev = newNode; newNode->next = oldNode; newNode->prev = NULL; ///Valore di ritorno della funzione return newNode; }



Rispondi quotando
