Buonasera,
Scrivo poichè sto riscontrando un problema con questo codice.
In altre parole ho un file .txt con all'interno delle stringhe suddivise per righe tramite con
'\0',
Quello che il programma dovrebbe fare è caricare una riga per volta dal file esaminarla ed estrapolare i 25 carattere successivi ai caratteri
"V e h".
Una volta trovati quindi i caratteri li copia in un array di char provvisorio e li riscrive in un altro file, denominato "Ole.txt",
ma in coda tramite la funzione fprintf dopo di che deve passare alla riga successiva e ripetere il ciclo.
Ora i problemi che riscontro è:
2) Non so il perchè ma non processa tutte le righe che dovrebbe processa in altre parole nel file ho circa 66000 righe mentre nel file destinazione ne ho circa 44500 e mettendo delle printf per vedere quante ne processava in effetti si interrompe l'esecuzione e non capisco perchè anche se la memoria RAM rimane bassa!
Quindi per intenderci i 2 file txt sono formati nel modo seguente::
FILE SORGENTE
- 1° Riga: jiofewhbki8uvdfabgyurjrtVh...............sdgrhnyf
2° Riga: ufbcwuyvbtibouwiuwbwibVh..............scfdsavsadbgn
etc.
I puntini logicamente rappresentano i 25 caratteri che devo ricopiare nel nuovo file di testo, quindi l'output desiderato dovrebbe essere:
FILE OUTPUT
- 1° Riga: Vh...............
2° Riga: Vh..............
etc.
Per chiarimento vi posto il codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXCOL 800
#define MAXNOME 100
main ()
{
int i, j, riemp;
char str[MAXNOME];
char riga[MAXCOL];
char copia[MAXNOME];
FILE *f;
FILE *fp;
printf("\nDigita il nome del file compreso il tipo (ES:.txt)!\n\nIl file deve essere nominato Senza Spaziature!\n\n");
scanf("%s", &str);
f=fopen(str, "r");
if (f == NULL){
printf("ERRORE CARICAMENTO FILE! \n");
system("PAUSE");
}
else {
while ((fgets(riga, MAXCOL, f) != NULL) || (!feof(f))){
i=0;
while((riga[i]!='V') || (riga[i+1]!='h'))
i++;
riemp=i+26;
j=0;
while(i<riemp){
copia[j]=riga[i];
j++;
i++;
}
fp=fopen("Ole.txt", "a");
fprintf(fp, "%s\n", &copia);
fclose(fp);
}
}
fclose(f);
return 0;
}
Ringrazio anticipatamente chiunque risponda