Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23

    [C] FILE Problema fseek()

    Ciao vi prego aiutatemi...non riesco a risolvere questo es...
    Dovrei convertire i caratteri presenti nel file, il problema è che non riesco a puntare con la fseek le lettere da leggere,legge solo la prima!! e mi da un ciclo infinito!!
    Vi prego qualsiasi consiglio....grazie......sto impazzendo...
    Nel codice ho scritto come commento dove si trova il problema!

    codice:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    char c;
    main(){
    FILE*fp;
    char v[25],w[25],i,s[10];
    
    int n1,j=0;
    
    for(i='a';i<='z';i++){
                         v[j]=i;
                         j++;
                         }
    j=0;
    for(i='z';i>='a';i--){
                         w[j]=i;
                         j++;
                         }
    
    printf("Per terminare la scrittura inserisci ctrl-z .\n");
    scanf("%s",&s);
    
    while(!feof(stdin)){
    scanf("%s",&s);
    printf("%s",s);}
    
    fp=fopen("daconvertire.txt","w+");
     if(fp==NULL) {printf("Errore"); exit(1);}
     fprintf(fp,"%s",s);
    rewind(fp);
    j=0;
    
    while(!feof(fp)){                                              //PROBLEMA!!!!DAQUI
                         n1=ftell(fp);
    
    
                      fscanf(fp,"%c",&c);
                         printf("%c\n",c);
    
                    if(c)
                     while(v[j]!=c)  j++;
                    else break;
    
                     fseek(fp,n1,0);
    
    
                    fprintf(fp,"%c",w[j]);
                     j=0;
                    };
    fclose(fp);
    
    fflush(stdin);
    getchar();
    }

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    commenta un po' il codice così capiamo che vuoi fare..

    eppoi, per cortesia, le parentesi! la parentesi graffe servono appunto per rendere chiaro lo scope di un costrutto.. usale!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23
    Scusate, allora praticamente creo due vettori:
    v=[a,b,c,....,x,y,z]
    w=[z,y,x,....,c,b,a]
    Creo e scrivo una stringa nel file.
    Poi finchè il file non finisce leggo un carattere alla volta dal file, lo cerco nel vettore V delle lettere dell'alfabeto mi salvo l'indice e sostistuisco la lettera nel file con la lettera al vettore W.
    Quindi CODIFICO IL FILE
    codice:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    char c;
    main()
    {
    FILE*fp;                                               //Dichiarazione variabili
    char v[25],w[25],i,s[10]; 
    int n1,j=0;
    
    for(i='a';i<='z';i++){                                //Creo vettore v[]
                         v[j]=i;
                         j++;
                         }
    j=0;
    for(i='z';i>='a';i--){                                //Creo vettore w[]
                         w[j]=i;
                         j++;
                         }
    
    printf("Per terminare la scrittura inserisci ctrl-z .\n");     //Scrivo in un vettore e poi lo 
    scanf("%s",&s);                                                      //trasferisco sul FILE 
    
    while(!feof(stdin)){
                             scanf("%s",&s);
                             }
    
    fp=fopen("daconvertire.txt","w+");                 
     if(fp==NULL) {printf("Errore"); 
                        exit(1);}
     fprintf(fp,"%s",s);                                               //Scrivo sul FILE
    rewind(fp);
    j=0;
    
    while(!feof(fp)){                                              //PROBLEMA!!!!DAQUI
                          n1=ftell(fp);
    
    
                      fscanf(fp,"%c",&c);                           //Leggo la lettera dal FILE
                        
                    if(c)
                     while(v[j]!=c)  j++;                          //Cerco la lettera nel vettore v delle
                    else break;                                      //lettere dell'alfabeto così j sara l'indice.
    
                     fseek(fp,n1,0);                                //Mi sposto
    
    
                     fprintf(fp,"%c",w[j]);                       //sostituisco la lettera nel FILE 
                     j=0;
                    };
    fclose(fp);
    
    fflush(stdin);
    getchar();
    }

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    hai aperto il file in scrittura.. dubito che tu possa usarlo per leggere

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23
    Ok...ma se dopo la scrittura lo chiudo e lo riapro con "r+" nn funziona cmq!
    Vorrei cercare di capire come mi devo spostare all'interno del FILE per leggere tutte le stringhe e convertirle!

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    prova a fare un po' di debug e mettere delle stampe in quel while per capire dove si incanta e perchè ci sono quei problemi

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