PDA

Visualizza la versione completa : [C] Lettura indesiderata di caratteri di controllo


FUN-BOY
03-01-2007, 13:52
Ciao.
Perch se lancio un codice come questo :




int k=0;
int j=0;
FILE* prova;
prova=fopen("prova.txt","r");

FILE *provetta;
provetta=fopen("provetta.js","w");

fprintf(provetta,"var link_list = new Array();\n\n");


do {

if(k==0) { //controlla se sono all'inizio del link
fprintf(provetta,"link_list[%d]=\"",j+1);
}

c=fgetc(prova);

if(c!='\n') {
k++;
fputc(c,provetta);
}

else {
k=0;
j++;
fputc('\"',provetta);
fputc(';',provetta);
fputc('\n',provetta);
}

} while(c!=EOF);

fputc('\"',provetta);
fputc(';',provetta);

fclose(prova);
fclose(provetta);



su un file vuoto (oppure su una lista di link con una newline finale) la putc mi mette anche il carattere ???
Io non lo voglio scrivere quel carattere eppure me lo mette sempre accidenti.
Ovviamente ho provato a fare il controllo c!='' e funziona, ma non capisco da dove legge quel carattere diabolico... :dh:

Grazie!
F.

zucchino
03-01-2007, 15:07
il motivo potrebbe essere nel controllo di fine file fatto DOPO aver scritto il carattere con putc.
prova a ristrutturare il ciclo in modo che effettui il controllo su EOF prima di scrivere.

FUN-BOY
03-01-2007, 19:35
S in effetti bastato aggiungere un controllo su c dopo che stato letto per risolvere il problema.
Grazie mille :ciauz:

Loading