Newsgroup: it.comp.programmare
Titolo: [C++] Strano problema con lettura da file

Salve,
ho questo problema:
Ho scritto in C++ un programmino che legge da un file wab gli indirizzi
email contenuti. Il file è wab ma io lo apro come se fosse un txt, e quindi
devo eliminare tutti i caratteri che non servono etc... ma il punto non è
questo; infatti il problema nasce quando nella rubrica sono memorizzati
circa oltre 15 indirizzi... infatti se sono di meno li rileva tutti,
altrimenti ne rileva solo alcuni o addirittura nessuno (pur essendocene 40).
Algoritmo a parte, il problema potrebbe essere causato dal fatto che il file
è wab e io lo apro in modalità semplice, oppure connesso a problemi di
memoria?
Ho compilato con gpp sotto win98.
Grazie
--
Luigi
byte...@hotmail.com
http://web.tiscali.it/luigi_web
ICQ #46240443

 memoria?
In che modo apri i file ? iostream ? o con la gestione classica del C ?
Ciao
        Riccardo

> In che modo apri i file ? iostream ? o con la gestione classica del C ?
con fstream.. es.:
ifstream myfile ("File.wab", ios::in);
Ciao


 ifstream myfile ("File.wab", ios::in);
Ovviamente intendevo fstream...mi sono sbagliato...
Non č che puoi postare il ciclo di lettura ?

while (s.find('@') != string::npos) {
     p = s.find('@');
     q = p;
     while (isvalid (s[q])) {
      if ((isvalid (s[q])))
       st = s[q] + st;
     };
     p = s.find('@') + 1;
     q = p;
     while (isvalid (s[q])) {
      if ((isvalid (s[q])))
       st += s[q];
     };
    s.erase (p - 1, 1);
    mailfile << '%' + st + '%';
    st = "";


Mi sono dimenticato di dire che isvalid() è una funzione che ritorna true se
il carattere passato come argomento appartiene all'insieme delle lettere
(minuscole e maiuscole), ai numeri o ad altri simboli (come la @)
Luigi

Ma la variabile "s" come la leggi ?
Ciao
        Riccardo

 wrote in message
mvOr7.44484$dJ3.3...@news1.tin.it...


 Copy&Paste.... ma non incollava niente!
Azz...strano...anche se non risco a capire perchè...
Sei sicuroc he il file non sia Unicode ?
Ciao
        Riccardo


Come faccio a capirlo?


 Come faccio a capirlo?
Ho provato ad aprire un file wab (è quello della dei contatti di Outlook ?)
e mi sembra che sia proprio Unicode...cioè vengono usati 2 byte per ogni
carattere...
Con l'ifstream non saprei proprio come leggerlo...prova ad usare il metodo
classico (FILE, fopen, fclose) e includi wchar.h...poi per leggere usi la
fgetws o la fgetwc...
Ciao
        Riccardo

 fgetws o la fgetwc...
Puoi scrivermi le 4 righe d'esempio per aprire il file e leggere la stringa
fino alla fine della riga? Nono conosco il C.
Grazie


 fino alla fine della riga? Nono conosco il C.
Prova cosě...
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
int main(int argc, char *argv[])
{
    FILE *f;
    f = fopen("C:\\WINDOWS\\Profiles\\Ric\\Application
Data\\Microsoft\\Address Book\\Ric.wab","rb");
    wchar_t buf[1024];
    int i;
    do{
        i=0;
        do{
            buf[i] = fgetwc(f);
            ++i;
        }while(!feof(f)&&i<1024);
        for(int j=0;j<i;++j)
        {
            if(buf[j]>=32) //Non visualzizao i caratteri che beepano
                putwchar(buf[j]);
        }
    }while(!feof(f));
    printf("\n%d", i);
    fclose(f);
    return 1;
}
Perň non ho controllato se il file viene letto completamente...
Ciao
        Riccardo