PDA

Visualizza la versione completa : [C++] conteggio caratteri


sapore di mare
02-09-2003, 15:12
Ciao a tutti,
vorrei sapere se c'è un comando, una funzione in c++ che una volta aperto un file (ad esempio c:\\prova.txt) mi dica quale carattere c'è in una determinata posizione nel file.
Ad esempio potrei voler sapere se nel file prova.txt alla posizione 3,0 ci sia una 'a'.......... come si può fare??? Ho provato con fseek() ma lui mi posiziona solo il cursore in quel punto e non riesco a fare un confronto che mi dica se in quella posizione ci sia o no una 'a'.

Spero di essere stata chiara nel chiedere!!!
Aspetto vostri suggerimenti
grazie mille!
ciao :ciauz:

Michele Facchin
02-09-2003, 17:31
In C++ i don't know.

In C fai..



fseek (fp, posizione, 0); // ricordati che esiste anche la posizione 0.
char c;
c = fgetc (fp);
if (c == 'A') ... // have you know?


Capito?

sapore di mare
03-09-2003, 20:20
Grazie, adesso provo se funziona........... in pratica mi mancava
c = fgetc (fp);
Adesso verifico!!!!!

Grazie :smack:

sapore di mare
04-09-2003, 14:02
Ok, ottimo!!! funziona perfettamente.
Vorrei sapere però se una volta individuato il carattere che mi interessa posso copiarmi in un altro file tutta la riga che lo contiene(evitando di copiarmi carattere per carattere!!)...

Grazie
ciao

ChReAn
05-09-2003, 10:03
Sì, puoi usare fgets, il cui prototipo è:

char *fgets(char *s, int size, FILE *stream);

P.S. Puoi compattare il codice così



if ((c = fgetc (fp)) == 'A') ...

sapore di mare
05-09-2003, 14:34
Avevo già visto quel comnado ma non ho capito bene la sintassi
char *fgets(char *s, int size, FILE *stream);
Cosa rappresentano quei paramentri che gli passo, in particolare int size, cos'è? Il numero di caratteri che deve prendere????

Grazie
ciao!

Luc@s
05-09-2003, 19:03
#include <string>
#include <iostream>

using namespace std;

int main()
{
string buf;
int a_count = 0;
int b count = 0;
char* lettere[] = { "a", "b"};
for( int i=0; i< buf.length(); i++ )
{
for( int j=0; j < 2; j ++ )
{
swhitc( buf.find(lettere[j]) )
{
case "a":
a_count++;
case "b":
b_count++;
default:
cerr << "Lettere non valida\n";

}
}
}
return 0;
}

sapore di mare
06-09-2003, 15:33
Grazie mille!!!
Adesso cerco di capire bene il codice che mi hai postato e tento di sistemare il mio programma!!

Grazie!

Loading