AIUTO URGENTE programma codifica C++

Pubblicità

tomdan

Utente Attivo
Messaggi
209
Reazioni
4
Punteggio
38
salve a tutti
devo fare l'esercizio sottostante ma il io l'ho svolto come vedete scritto sotto ma quando lo eseguo mi da come testo di uscita il testo corretto ma alla fine di ogni riga aggiunge il carattere ^p
è tutto il giorno che ci sbatto la testa vi prego aiuto
(compilare da linux aprire con emacs).
grazie in anticipo per le risposte.

testo esercizio:
Cattura.webp


testo di prova:
Filastrocca delle parole: Fatevi avanti! Chi ne vuole?
Di parole ho la testa piena, con dentro la "luna" e la "balena".
Ci sono parole per gli amici: Buon giorno, Buon anno, Siate felici!
Parole belle e parole buone; parole per ogni sorta di persone.
Di G. Rodari.




Codice:
#include<iostream>
#include<fstream>
#include <stdlib.h>
using namespace std;


const int COD=3;
const int DIM=256;


void cod(char c[]);




int main (int argc,char * argv[])
{
    fstream myin,myout;
    char c[DIM];
    int i;
    
    if (argc!=3)
    {
        cout<<"ERRORE: usare sintassi $ "<<argv[0]<<" <FILE IN> <FILE OUT>"<<endl;
        exit(0);
    }
    
    myin.open(argv[1],ios::in);
    if (myin.fail())
    {
        cout<<"ERRORE: file: "<<argv[1]<<" non trovato!"<<endl;
        exit(0);
    }
    
    myout.open(argv[2],ios::out);
    
    myin.getline(c,DIM);
    while (!myin.fail())
    {
        cod(c);
        myout<<c<<endl;
        myin.getline(c,DIM); 
    }
        
myin.close();
myout.close();


}


void cod(char c[])
{
    for (int i=0;c[i]!='\0';i++)
    {
        c[i]=c[i]+COD;
    }
    
}
 
Ma quel ^p non è semplicemente la rappresentazione del caporiga? (endl) ... hai provato ad aprire l'output con altri editor, oppure ad evitare di inserire il terminatore di riga? ( magari usando un qualche stream per l'aggiunta di righe nuove).

Purtroppo non uso c++ da una vita e non saprei essere piu' utile :(
 
Ma quel ^p non è semplicemente la rappresentazione del caporiga? (endl) ... hai provato ad aprire l'output con altri editor, oppure ad evitare di inserire il terminatore di riga? ( magari usando un qualche stream per l'aggiunta di righe nuove).

Purtroppo non uso c++ da una vita e non saprei essere piu' utile :(

grazie per aver risposto

ho provato con emacs ^p con gedit simbolo incomprensibile note windows non va a capo ma segna un + strano notepad++ un singolo carattere nero con in bianco dle o qualcosa del genere libre office # editor del mac file corretto nano ^p
ma il simbolo del a capo è \n e getline prende tutta la stringa fino a\n senza leggere \n e al posto di \n mette \0 che sta per fine stringa e la funzione scritta da me per la codifica si ferma quando incontra \n myout che equivale a cout per il mio file dovrebbe leggere tuta la stringa (array di char) fino a \0 non compreso e endl equivale a \n per far andare a capo non riesco a capire perche spunta fuori quel carattere che è in più ho provato pure a controllare la lunghezza delle stringhe in uscita con strlen ma sono sempre un cratere in meno di quelli visualizzati come output
 
Ultima modifica:
E' il carriage return (0x0D) che se gli sommi 3 diventa Data Link Escape (0x10), ovvero ^P.
Se il file di testo è stato scritto in un sistema non UNIX, è facile che gli "a capo" siano la combinazione \r\n (\r è il carriage return) e non il solo \n come in Linux, questo potrebbe essere il motivo per cui ti trovi quel carattere.
Decidi tu come trattarlo.
 
E' il carriage return (0x0D) che se gli sommi 3 diventa Data Link Escape (0x10), ovvero ^P.
Se il file di testo è stato scritto in un sistema non UNIX, è facile che gli "a capo" siano la combinazione \r\n (\r è il carriage return) e non il solo \n come in Linux, questo potrebbe essere il motivo per cui ti trovi quel carattere.
Decidi tu come trattarlo.

mio salvatore non so come ringraziati :inchino: ora funziona
 
Pubblicità
Pubblicità
Indietro
Top