MasterDrive.it   
Vai indietro   MasterDrive.it > Software Development > C/C++



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 16-12-2004, 00:29   #1 (permalink)
Neofita della community

 
77 Messaggi

LUCAB novizio della comunita' ( + 10 )
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


LUCAB non è in linea   Bookmark and Share Rispondi quotando
Vecchio 16-12-2004, 01:03   #2 (permalink)
Moderatore Globale

 L'avatar di AntonioGiuliana

 
6,720 Messaggi

AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )
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
AntonioGiuliana non è in linea   Bookmark and Share Rispondi quotando
Vecchio 16-12-2004, 10:12   #3 (permalink)
Neofita della community

 
77 Messaggi

LUCAB novizio della comunita' ( + 10 )
Ma in questo modo dopo ogni parola letta aggiunge il carattere "<" , io voglio inserirlo solo alla fine della riga!
LUCAB non è in linea   Bookmark and Share Rispondi quotando
Vecchio 16-12-2004, 13:23   #4 (permalink)
Moderatore Globale

 L'avatar di bottomap

 
2,935 Messaggi

bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )
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)
bottomap non è in linea   Bookmark and Share Rispondi quotando
Vecchio 16-12-2004, 14:34   #5 (permalink)
Moderatore Globale

 L'avatar di AntonioGiuliana

 
6,720 Messaggi

AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )AntonioGiuliana e' un tipo da prendere in considerazione ( + 650 )
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
AntonioGiuliana non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum

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.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.