PDA

Visualizza la versione completa : [C] Leggere da file


TestaDiMucca
22-04-2004, 13:54
Ciao :D
vorrei sapere come fare per leggere da un file.. io devo cercare se nel file ho una determinata successioni di caratteri che però non sono ad offset stabili..

Se io devo cercare ad esempio se nel file ciao.txt c'è scritto, ptima o poi "TESTADIMUCCA", come faccio ? azzie :stordita:

:mavieni:

cristiano_longo
22-04-2004, 14:50
Per quanto riguarda la lettura del file, esistono delle funzioni standard : fopen, fread, fclose.

Per il secondo problema, ci devi riflettere un po su e inventarti qualcosa.

jhon[array]
24-04-2004, 01:44
dovresti far avanzare l'offset di un byte alla volta, credo...

kentaromiura
24-04-2004, 09:27
bo! prova cosi!


#include<stdio.h>
#include<string.h>
void main(void){
FILE *in;
char *s;
in=fopen("pippo.plu","r");
while(!feof(in))
{
fscanf(in,"%s",s);
if feof(in) break;
if(strstr("TESTADIMUCCA",s))printf("TESTADIMUCCA c e");
}
}

TestaDiMucca
24-04-2004, 13:06
grazie a tutti !!

interessante quella funzione !
http://www.mkssoftware.com/docs/man3/strstr.3.asp

gandalf45
24-04-2004, 14:31
un metodo più incasinato ma cmq funzionante è:

-copi il contenuto del file in un array di char;

-for(x=0; x<lunghezza_array; x++)
if(array[x]=='T' && array[x+1]=='E' && //etc...

ti sconsiglio però di usare questo metodo tranne in casi particolari perchè se non stai attento potrebbero nascere dei casini...(tipo provare a leggere un carattere oltre il limite dell array...)

TestaDiMucca
24-04-2004, 18:53
grazie a tutti per l'aiuto.....ora la cosa si complica perchè voglio fare na cosa nuova.... io ho un file così fatto :

ncfft=2058
cr=2.839326e+000
fl=65536
cpu=665.015625
prog=0.08626076
potfreq=-1
potactivity=0
outfilepos=0
...
..


a me interessa quello che viene dopo "prog=0." e lo voglio isolare.. come faccio ?

i'mshady
24-04-2004, 19:25
puoi usare la mia funzione mid versione C..
inventati qualcosa con questa





#include <string.h>
#include <alloc.h>

char* mid(char[],int,int); /*dichiara la funzione*/

char* mid(char testo[],int inizio,int lungh){

int conta=0,num=0,max=0;
char* ris;
char* stringa;

stringa=malloc(strlen(testo));
strcpy(stringa,testo);

max=inizio+lungh-1;
num=inizio-1;

while (num<max){

ris[conta]=stringa[num];
num++;
conta++;

}

while (conta<strlen(ris)){
ris[conta]=0;
conta++;
}

return(ris);

}



l'ho fatta col borland quindi non so se funge anche sul c++.. prova

Loading