Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 31
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Beh, in effetti il problema "primitivo" e' che stai imparando il C in 3 giorni su un forum ... tutti i nodi vengono al pettine prima o poi ...

    La memcpy la utilizzi come descritto in

    http://www.cplusplus.com/reference/c...string/memcpy/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #12
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Mi trovo molto meglio con questo...

    while((found2 = strpbrk(found, "\t")) != NULL) {
    *found2 = '\n';
    found2 = (char*) ptr2;
    }

    solo che adesso mi è rimasto da fare questa piccola modifica:

    in sostanza al posto della \t che non funzia devo mettere l'equivalente di 16 spaziettini...
    in modo che le combinazioni mi vadano una sotto l'altra...

    il primo problema di togliere la virgola all'inizio l'ho risolto....

    Mi resterebbe ancora quello di aggiungere alla fine di ciascuna stringa un ";"

    Grazie



    Un es. del mio output attuale... :

    58,22,47,49,69 (sedici spazi) 18,77,33,62,19 (sedici spazi) 68,65,41,28,67 (sedici spazi) 76,55,48,85,71

    mentre io dovrei aver lo stesso uguale a:

    58,22,47,49,69;
    18,77,33,62,19;
    68,65,41,28,67;
    76,55,48,85,71;


  3. #13
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Se per una ogni linea letta utilizzi una stringa chiamata

    s

    e fai

    codice:
       memcpy(s, s+14, 15);
       for(x=2; x<14; x+=3) s[x]=',';
    e poi scrivi su file

    codice:
       file << s << ';' << endl;
    hai risolto ... ovviamente il tutto ripetuto per ogni linea del file da leggere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #14
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    grazie infinite ma...

    il nuovo output mi appare così:

    ’|,93,/0,/0, BA|1939/01/07 BA 58 22 47 49 69
    ;
    A|,93,/0,/1, BA|1939/01/14 BA 18 77 33 62 19
    ;
    A|,93,/0,/2, BA|1939/01/21 BA 68 65 41 28 67
    ;
    A|,93,/0,/2, BA|1939/01/28 BA 76 55 48 85 71
    ;
    A|,93,/0,/0, BA|1939/02/04 BA 70 2 20 85 75
    ;
    A|,93,/0,/1, BA|1939/02/11 BA 82 81 16 52 77
    ;
    A|,93,/0,/1, BA|1939/02/18 BA 51 65 6 29 81
    ;
    A|,93,/0,/2, BA|1939/02/25 BA 3 54 79 45 59
    ;




  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ripulisci tutto il codice che usi e postalo, altrimenti come si fa a dirti dove sbagli?

    E intendo:

    codice che legge dal file

    codice che modifica la riga letta

    codice che scrive la riga modificata nel nuovo file

    P.S. Se nella riga ci sono numeri ad una cifra (esempio 10 3 21 39 4), la stringa viene completata con spazi davanti a tali numeri o no ? In altre parole, la lunghezza della stringa è sempre la stessa o dipende dalla lunghezza dei numeri che ci sono?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    eccolo qua per intero...

    #include <iostream>
    #include <fstream>
    #include <string>

    using namespace std;


    int main (int argc, char *argv[])
    {


    ofstream pippo;
    pippo.open("estrazioni2.txt", ios:ut);
    char s[]="test file";

    //SPAZIO PER LETTURA FILE...

    int inizio, lunghezza;
    inizio=20;
    lunghezza=30;

    FILE * pFile;
    FILE * filetto;
    char string [1000];

    pFile = fopen ("estrazioni.txt" , "r");
    if (pFile == NULL) perror ("Errore");

    else {

    while(!feof(pFile))
    {



    fgets(string , 100 , pFile);


    if(string[11]=='B' && string[12]=='A')
    {


    char s[10];


    strncpy(s,string+inizio,lunghezza);

    memcpy(s, s+14, 15);
    for(int x=2; x<14; x+=3) s[x]=',';


    cout << s;

    pippo << s << ';' << endl;



    }
    }
    }


    cout << "Press ENTER to continue..." << endl;
    cin.get();
    return 0;
    }




  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Dato che ci sei, rispondi anche alla domanda ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #18
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ho apportato le modifiche

    codice:
    int main (int argc, char *argv[])
    {
    	ofstream pippo;
    	pippo.open("estrazioni2.txt", ios::out);
    
    	FILE *pFile; 
    	char string [1000]; 
    
    	pFile = fopen ("estrazioni.txt", "r"); 
    	if (pFile == NULL) 
    		perror ("Errore"); 
    	else 
    	{ 
    		while(!feof(pFile))
    		{ 
    			fgets(string , 100 , pFile); 
    			string[strlen(string)-1]=0;
    
    			if(string[11]=='B' && string[12]=='A') 
    			{ 
    				memcpy(string, string+14, 15);
    				for(int x=2; x<14; x+=3) string[x]=',';
    
    				cout << string << ';' << endl;
    				pippo << string << ';' << endl;
    			} 
    		}
    	} 
    
    	cout << "Press ENTER to continue..." << endl; 
    	cin.get();
    
    	return 0;
    }
    per far funzionare il codice (senza correggere le incongruenze C/C++ ...) a patto che le righe siano del tipo

    codice:
    1939/01/28 BA 76 55 48 85 71
    1949/01/28 BA  6  5  8  5  1
    1959/01/28 BA 76 55 48 85 71
    e non

    codice:
    1939/01/28 BA 76 55 48 85 71
    1949/01/28 BA 6 5 8 5 1
    1959/01/28 BA 76 55 48 85 71
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #19
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    provo a rispondere alla domanda(e)

    "P.S. Se nella riga ci sono numeri ad una cifra (esempio 10 3 21 39 4), la stringa viene completata con spazi davanti a tali numeri o no ? In altre parole, la lunghezza della stringa è sempre la stessa o dipende dalla lunghezza dei numeri che ci sono?"

    si la lunghezza della stringa è sempre la stessa e nel caso di numeri ad una cifra questi prendono sempre il posto della prima parallela a quelle a due cifre...

    es:

    1939/01/28 BA (spazio uguale) 76(spazio uguale)55(spazio uguale)48(spazio uguale) 85(spazio uguale) 71
    1939/02/04 BA(spazio uguale) 70(spazio uguale) 2(spazio uguale) 20(spazio uguale) 85(spazio uguale) 75




  10. #20
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    l'ho subito provato grazie ma...

    Originariamente inviato da oregon
    Ho apportato le modifiche

    codice:
    int main (int argc, char *argv[])
    {
    	ofstream pippo;
    	pippo.open("estrazioni2.txt", ios::out);
    
    	FILE *pFile; 
    	char string [1000]; 
    
    	pFile = fopen ("estrazioni.txt", "r"); 
    	if (pFile == NULL) 
    		perror ("Errore"); 
    	else 
    	{ 
    		while(!feof(pFile))
    		{ 
    			fgets(string , 100 , pFile); 
    			string[strlen(string)-1]=0;
    
    			if(string[11]=='B' && string[12]=='A') 
    			{ 
    				memcpy(string, string+14, 15);
    				for(int x=2; x<14; x+=3) string[x]=',';
    
    				cout << string << ';' << endl;
    				pippo << string << ';' << endl;
    			} 
    		}
    	} 
    
    	cout << "Press ENTER to continue..." << endl; 
    	cin.get();
    
    	return 0;
    }
    per far funzionare il codice (senza correggere le incongruenze C/C++ ...) a patto che le righe siano del tipo

    codice:
    1939/01/28 BA 76 55 48 85 71
    1949/01/28 BA  6  5  8  5  1
    1959/01/28 BA 76 55 48 85 71
    e non

    codice:
    1939/01/28 BA 76 55 48 85 71
    1949/01/28 BA 6 5 8 5 1
    1959/01/28 BA 76 55 48 85 71

    il file sorgente è così (con tutti i numeri in parallelo indipendentemente dalla errata visualizzazione sottostante che non rispetta il parallelismo...):

    1939/01/07 BA 58 22 47 49 69
    1939/01/07 FI 27 57 81 43 61
    1939/01/07 MI 40 38 57 67 7
    1939/01/07 NA 85 44 48 88 55
    1939/01/07 PA 73 80 39 38 57
    1939/01/07 RM 73 24 4 39 22
    1939/01/07 TO 19 43 10 31 27
    1939/01/07 VE 9 43 61 14 75
    1939/01/14 BA 18 77 33 62 19
    1939/01/14 FI 31 47 12 7 80
    1939/01/14 MI 35 24 52 90 41
    1939/01/14 NA 4 10 36 63 35
    1939/01/14 PA 10 77 43 37 35

    mentre l'ultimo output risulta questo:

    58,22,47,49,69 8 22 47 49 69 ;
    18,77,33,62,19 8 77 33 62 19 ;
    68,65,41,28,67 8 65 41 28 67 ;
    76,55,48,85,71 6 55 48 85 71 ;
    70,2 ,0 ,5 ,5 0 2 20 85 75 ;
    82,81,16,52,77 2 81 16 52 77 ;
    51,65,6 ,9 ,1 1 65 6 29 81 ;

    mi chiedo dove io fagiani nel ricreare il file .cpp riportando fedelmente tutte le tue righe

    TNX


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.