Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Lista di puntatori a file

    ciao a tutti, questo è il mio primo post...
    vorrei sapere se è possibile (ed eventualmente il codice) creare una lista di puntatori a file in C. Praticamente ogni campo della lista deve puntare a un file di testo.grazie

  2. #2
    E che ce vuole ?
    codice:
    typedef struct _Node {
    
       FILE *fp;
       struct _Node *next;
    
    }FilePointerNode;
    fatto


  3. #3
    grazie mille......

  4. #4
    ma se volessi aggiungere 2 file ,ad es testo1.txt e testo2.txt, che devo fare?quindi avere il primo elemento della lista che punta a testo1 e il secondo a testo2....grazie

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Ti crei una funziona che crea un nodo e lo istanzia correttamente.
    codice:
    FilePointerNode* makeNewNode(const char *filename){
    
    /*Crea un nuovo nodo*/
    /*Apre il file*/
    /*Restituisce il nodo*/
    
    }
    Poi fai:
    codice:
    FilePointerNode *firstNode = makeNewNode("testo1.txt");
    FilePointerNode *secondNode = makeNewNode("testo2.txt");
    
    firstNode->next = secondNode;

  7. #7
    codice:
    ..
    FILE *  fp;
    ...
    Ogni file prima di essere letto o scritto deve essere aperto. Questa operazione si fa generalmente con una chiamata alla funzione fopen che restituisce un puntatore ad una struttura dati chiamato "file pointer" e definito in stdio.h che deve essere utilizzato per tutte le operazioni successive.

    Seguendo l'esempio di menphisx

    codice:
    FilePointerNode firstNode;
    FilePointerNode secondNode;
    
    firstNode.fp = fopen("testo1.txt", "r");
    secondNode.fp = fopen("testo2.txt", "r");
    firstNode.next = &secondNode;
    secondNode.next = NULL;
    prova a buttare giù qualcosa tu
    ciao
    sergio

  8. #8
    Il mio problema è il seguente:
    il mio programma in FLEX/BISON analizza una pagina HTML, se all'interno trova un link ad altre pagine le scarica e dopo aver finito la principale analizza quelle linkate. Voglio creare una lista di puntatori a file in cui ogni elemento della lista punti ad un singolo file (che rappresenta la pagina linkata). Ho seguito i vostri suggerimenti e ho buttato giu questo codice ma non mi sembra molto corretto....sopratutto per l'uso dei puntatori e il file che passo.

    #include <stdio.h>
    #include <malloc.h>

    typedef struct _Node {

    FILE *fp;
    struct _Node *next;

    }FilePointerNode;

    FilePointerNode* firstNode=NULL;
    FilePointerNode* ausNode=NULL;

    FilePointerNode* makeNewNode(const char *filename){
    if (firstNode==NULL) //se la lista è vuota
    {
    firstNode=(struct _Node *)malloc(sizeof(struct _Node));
    firstNode->fp=("testo2.txt");
    firstNode->next=NULL;
    ausNode=firstNode;
    }
    else {
    while (ausNode->next !=NULL) ausNode=ausNode->next;
    ausNode->next=(struct _Node *)malloc(sizeof(struct _Node));
    ausNode=ausNode->next;
    ausNode->fp=("altro puntatore a file che si trova in una cartella");
    ausNode->next=NULL;
    };
    return(firstNode);
    };


    Help me please

  9. #9
    codice:
    FilePointerNode* makeNewNode( const char *filename ) {
    
      FilePointerNode* node = (FilePointerNode *) malloc (sizeof (FilePointerNode*));
      node->fp = fopen (filename, "r");
      node->next = NULL;
      
      return node;
    };
    ma questa è solo una funzione.

    ciao
    sergio

  10. #10
    a me è venuta in mente questa implementazione, seguendo le tracce di questo post, guarda se ti funziona

    codice:
    #include <stdio.h>
    #include <malloc.h>
    
    typedef struct _Node {
    
    	FILE *fp;
    	struct _Node *next;
    
    } FilePointerNode;
    
    FilePointerNode* firstNode = NULL;
    FilePointerNode* ausNode = NULL;
    
    FilePointerNode* makeNewNode( const char *filename ) {
    
    	FilePointerNode* node = (FilePointerNode *) malloc ( sizeof ( FilePointerNode ) );
    	node->fp = fopen (filename, "r");
    	node->next = NULL;
      
    	return node;
    
    };
    
    FilePointerNode* addNode (FilePointerNode *root, const char *filename ) {
    
    	if ( !root )
    		return makeNewNode( filename );
    	else {
    
    		FilePointerNode* node = root ;
    		while ( node->next ) node = node->next ;
    		return node->next = makeNewNode( filename );
    
    	}
    
    };
    
    int main ()
    {
    
    	FilePointerNode* root = addNode ( NULL, "testo1.txt" ) ;
    	addNode ( root, "testo2.txt" ) ;
    
    	return ( 0 ) ;
    }
    ciao
    sergio

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.