PDA

Visualizza la versione completa : [C] Array di stringhe: memorizzazione in matrice e comparazione


^EvAmPiReS^
17-05-2006, 19:40
while((e=fgetc(ptrdel))>0) {

if((char)e=='\n') {

control[i]='\0';

if((strcmp(control,del)) !=0) {

printf("\nNon ho trovato l'occorrenza, memorizzo\n");

mat[k] = control;

i=0;

k++;

}

if((strcmp(control,del)) == 0) {

printf("\nTrovata occorrenza, non memorizzo\n");

i=0;
}

}

if(e!=10) {

control[i]=(char)e;

i++;

}

}

fclose(ptrdel);

printf("mat[0]=%s\n",mat[0]);

printf("mat[1]=%s\n",mat[1]);

printf("mat[2]=%s\n",mat[2]);

ptrdel = fopen("results.txt","w+");

for(x=0;x<n-1;x++) {

fprintf(ptrdel,"%s",mat[x]);
fprintf(ptrdel,"%c",'\n');
}

fclose(ptrdel);
}

Sapreste dirmi cosa fa in modo che mat[0] sia uguale a mat[1] dopo la lettura di tutto il file?
mat un array di stringhe su cui voglio salvare ogni stringa che ho letto da file di testo e che comparata con un'altra (ovvero control) sia diversa, altrimenti proseguo senza memorizzarla. Dal file di testo capisco che una stringa finita dal carattere '\n'. Scrivo su control solo se il carattere tornato non la fine del file o il carattere speciale "line feed" che indica la fine di una riga.
Grazie, da parecchio che ci smanetto :dh:

devil89
17-05-2006, 19:54
Se la variabile control un array, come fai ad usarla (come hai fatto in alcuni punti) come se fosse una variabile semplice?

Inoltre, se vai a scrivere pi linee nel file devi modificare la funzione fopen.
Devi scrivere:



ptrdel = fopen("results.txt","a"); // viene scritto in coda

^EvAmPiReS^
17-05-2006, 21:23
Ho risolto: facevo una minchiata concettuale:


mat[k] = control;

invece io volevo copiare la stringa ovvero:


strcpy(mat[k],control);


Grazie comunque :ciauz: :ciauz:

Loading