+ Rispondi
Risultati da 1 a 5 di 5

Discussione: [C] Programmino che aggiunge un carattere

  1. #1
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    77
    Salve a tutti ho un problema con un piccolo programmino in C. Voglio aprire un file contenente dei dati e voglio aggiungere alla fine di ogni riga un carattere (es. voglio aggiungeer < ).HO aperto il file e ho effettuato il controllo fino alla fine del file.Eccovi il codice:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define EOL '\n'
    int main(void)
    {
    FILE *kf;
    char A[60];
    if ((kf = fopen("key.txt","rw"))==NULL) puts("\nImpossibile aprire il file.\n");

    while (fscanf(kf,"%s",A)!= EOF)
    {
    if(fscanf(kf,"%s",A)== '\n')
    {
    printf("%d",kf);
    fprintf(kf,"<");
    }
    }
    getchar();
    fclose(kf);
    return (0);
    }


    sembra che dovrebbe andare bene ed invece il mio file rimane invariato.Dateci un occhiata voi e fatemi sapere cosa ho sbagliato... vi ringrazio ciao


  2. #2
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    La linea

    if(fscanf(kf,"%s",A)== '\n')

    non ha senso.

    Se con la fscanf della while leggi una linea del file, cosa vuoi fare con la seconda? Ti ricordo che la fscanf restituisce un valore numerico e cioe' il numero di campi letti ... Ma tu lo confronti con il carattere cr ... Non ha senso.

    In piu', a cosa serve la printf seguente in cui visualizzi il valore numerico del puntatore alla struttura di tipo FILE? E' una informazione poco significativa e che non c'entra nulla con il tuo programma ...

    E poi un file sequenziale di testo deve essere letto, modificato e riscritto in un altro file ... Esamina le linee di codice che seguono da cui puoi prendere spunto in maniera concreta ...

    #include <stdio.h>

    int main(int argc, char* argv[])
    {
    FILE *kfr, *kfw;
    char Line[200];

    if ((kfr = fopen("C:\\key.txt","r"))==NULL)
    {
    puts("\nImpossibile aprire il file da leggere.\n");
    return 1;
    }

    if ((kfw = fopen("C:\\key2.txt","w"))==NULL)
    {
    puts("\nImpossibile aprire il file da scrivere.\n");
    fclose(kfr);
    return 2;
    }

    while(fscanf(kfr, "%s", Line) != EOF)
    fprintf(kfw, "%s<\n", Line);

    fcloseall();

    remove("C:\\key.txt");
    rename("C:\\key2.txt", "C:\\key.txt");

    return 0;
    }


    Oregon

  3. #3
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    77
    Ma in questo modo dopo ogni parola letta aggiunge il carattere "<" , io voglio inserirlo solo alla fine della riga!

  4. #4
    Moderatore Globale L'avatar di bottomap
    reputazione complessiva: 41 41

    Messaggi
    2,960
    Ciao,
    il buon Oregon si è dimenticato degli spazi, oppure non hai menzionato il fatto che le righe nel file contengono spazi, ad ogni modo cambia:
    while(fscanf(kfr, "%s", Line) != EOF)

    in:
    while(fscanf(kfr, "%[^\n\t]", Line) != EOF)

    Questa notazione ti permette di bloccare la fscanf quando trova un \n o un \t... ci puoi aggiungere altri caratteri che non vuoi vengano considerati...

    Ciaociao [img]smileys/smiley1.gif[/img]


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Se un utente ti è stato d'aiuto usa il pulsante Commenta Intervento per aumentare la sua reputazione!

    "La violenza è l'ultimo rifugio degli incapaci" - I.Asimov
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  5. #5
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    Sì Luca, ma tu non avevi detto che la riga fosse fatta da piu' parole ... Pensavo ad un file del tipo

    Rossi
    Verdi
    Gialli
    Bianchi

    e cosi' via ... Le specifiche di un problema sono importanti e devono essere molto precise ...

    Oregon

+ Rispondi

Discussioni Simili

  1. Stampare Testo e img
    Di kikko nel forum Visual Basic .Net
    Risposte: 16
    Ultimo Messaggio: 20-10-2006, 15:08
  2. Cancella carattere
    Di didak nel forum MS Office, Access, VBA
    Risposte: 1
    Ultimo Messaggio: 06-02-2006, 19:03
  3. Le Common Dialog Box
    Di freezer nel forum Visual Basic 6 Tutorials & How-To
    Risposte: 0
    Ultimo Messaggio: 18-11-2005, 10:45
  4. Carattere sconosciuto in una stringa
    Di dolcissimo nel forum Visual Basic 6
    Risposte: 5
    Ultimo Messaggio: 05-06-2005, 18:26
  5. Confronto tra stringhe in vb6
    Di ferrari nel forum Visual Basic 6
    Risposte: 44
    Ultimo Messaggio: 13-10-2004, 17:50

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi