|
||||
|
|
#1 (permalink) |
|
Neofita della community ![]()
77 Messaggi
![]() |
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 (permalink) |
|
Moderatore Globale ![]() ![]()
6,720 Messaggi
![]() ![]() ![]() ![]() ![]() ![]() |
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 |
|
|
|
|
|
#4 (permalink) |
|
Moderatore Globale ![]() ![]()
2,935 Messaggi
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
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) |
|
|
|
![]() |
| Strumenti della discussione | |
| Modalità di visualizzazione | |
|
|
Discussioni simili
|
||||
| Discussione | Ha iniziato questa discussione | Forum | Risposte | Ultimo messaggio |
| Stampare Testo e img | kikko | Visual Basic .Net | 16 | 20-10-2006 15:08 |
| Cancella carattere | didak | MS Office, Access, VBA | 1 | 06-02-2006 19:03 |
| Le Common Dialog Box | freezer | Visual Basic 6 Tutorials & How-To | 0 | 18-11-2005 10:45 |
| Carattere sconosciuto in una stringa | dolcissimo | Visual Basic 6 | 5 | 05-06-2005 18:26 |
| Confronto tra stringhe in vb6 | ferrari | Visual Basic 6 | 44 | 13-10-2004 17:50 |
Tutti gli orari sono GMT +2. Attualmente sono le 09:47.












Modalità lineare


