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

    [C] Gestione lista da file: eliminazione x righe con fgets

    ciao a tutti,
    apro una nuova discussione xke sono incappato in un nuovo problema,nonostante l'utente linoma mi abbia dato una grossa mano precedentemente..
    allora dovrei modificare il txt in base al numero di righe..cioè:
    codice:
    blablablablablabla
    blablalblalblalblalbllblalblalbla
    note____________
    _______________
    _______________
    Ecco vorrei eliminare ricorsivamentele le 4 righe successive alla parola note..

    Grazie in anticipo.

  2. #2
    Allora sono arrivato a scrivere ciò,ma la parte + importante,cioè la cancellazione delle stringhe interessate,nn va a buon fine:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    #define kFileDaLeggere          "asd.txt"
    #define kFileDaScrivere         "output.txt"
    
    char        stringa[235];
    FILE        *ingresso;
    int i,fileDimm=0;
    char **buffer;
    
    int main (void)
    {
        
        printf("Lettura dal file %s\n",kFileDaLeggere);
     
        ingresso=fopen(kFileDaLeggere,"rw");
          buffer=(char**)malloc(2 * sizeof(char*));
    
    for(i=0;i<234;i++)
    {
    fgets(stringa,256,ingresso);
           if(stringa=="note")
       {
       xxxxxxxxxxxxxxxxxxxx //è qui il problema
       }
    else
    buffer[i]=malloc(sizeof(strlen(stringa)));
    strcpy(buffer[i],stringa);
    
    printf("s[%d]=%s\n",i,buffer[i]);
    
    }
    fclose(ingresso);
    return 0;
    }

  3. #3
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    bhè innanzitutto qua da come leggo così un pò velocemente...noto degli errori tipo:
    codice:
    if(stringa=="note")
    quando devi confrontare due stringhe devi usare la funzione apposita strcmp()!!
    poi seconda cosa...a cosa t serve quel for che va fino a 234?? se il file è lungo 1000 righe e la parola "note" si trova alla 466 riga in quel modo non la trovi!! ti conviene invece fare
    codice:
    while ( fgets(stringa,256,ingresso) != NULL ) {...}
    e dentro il ciclo fai quello che devi fare...e così il ciclo termina quando termina il file!!
    Infine un'altra cosa che nn ho capito...tu allochi buffer così:
    codice:
    buffer=(char**)malloc(2 * sizeof(char*));
    però poi nel ciclo for scrivi questo:
    codice:
    buffer[i]=malloc(sizeof(strlen(stringa)));
    ovviamente ti darà problemi perchè quando la variabile i vale più di 2 ti andrà a scrivere chissà dove!!
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.