funzione otuput su file di testo C++

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
dade-bian
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 597
Iscrizione: sabato 17 dicembre 2011, 12:08
Desktop: Gnome Shell
Distribuzione: Ubuntu/Debian
Sesso: Maschile
Località: Milano

funzione otuput su file di testo C++

Messaggio da dade-bian »

sicuramente tutti conosceremo il vantaggio della schell di utilizzare ">" o ">>"
mi domandavo se potevo utilizzare qualcosa del genere con una funzione,
mandando "ls > lista.txt" ottengo la lista dei file e delle directory nella directory attuale.
mi domandavo se: "./code.cpp/function(int a, int b) > risultato.txt" era possibile farlo con una funzione durante l'esecuzione di un programma.
la funzione utilizza dei comunissimi cout, perchè questo deve fare, solo in un caso eccezionale mi servirebbe il risultato su un file.
senza dover scrivere la funzione con un parametro in piu che differenzia i due output o una funzione uguale tranne per la singola riga del output.
Buona Community a tutti !!
DavideDaSerra
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 349
Iscrizione: domenica 15 febbraio 2009, 15:26
Desktop: xubuntu
Distribuzione: Ubuntu12.10 x86_64
Località: Da qualche parte in quel di Modena

Re: funzione otuput su file di testo C++

Messaggio da DavideDaSerra »

Dal cpp NO, devi aprire un file scriverlo e chiuderlo, se invece vuoi 'redirigere l'output' del programma cpp allora sì, ma devi usarlo sempre da shell.

es: il programma p1.out stampa 'hello world'

$> pi.out > fileout.txt

in fileout.txt avrai hello world

ma dal codice cpp non puoi fare

"ciao mondeo" >> /home/user/FordCars.txt

sperando che il compilatore interpreti tutto come:
cerca il file, aprilo, stampa e chiudilo

Nota: secondo me non hai ben chiara la differenza tra sorgente ed eseguibile, che in shell, in efetti è un flag settato, in cpp il codice, prima di essere eseguito, è compilato quindi tu da 'fuori' non puoi chiamare una funzione dichiarata nel codice cpp, se non così, o eventualmente, aggiungendo un parametro alla chiamata che ti dica quale funzione invocare.

ESEMPIO Chiamata corretta:

Codice: Seleziona tutto

char* funzione (char s1[], char s2){
//nell'esempio concatena le 2 stringhe
return strcat(s1,s2);
}

char* schiaffo (){
return "slap";
}

int main (int argc, char **argv){
//controlli che argv[1]  valga funzione o schiaffo
if(strcmp(argv[1],"funzione"))funzione(argv[2],argv[3]); >>cout}
if(strcmp(argv[2],"schiaffo"))funzione(); >>cout}

da shell

Codice: Seleziona tutto

a.out funzione stringa1 stringa2 >> fout.txt

Codice: Seleziona tutto

cat fout.txt
mostrerebbe

Codice: Seleziona tutto

stringa1stringa2
invece

Codice: Seleziona tutto

a.out schiaffo >> fout.txt

Codice: Seleziona tutto

cat fout.txt
mostrerebbe

Codice: Seleziona tutto

slap

chiamata errata:

Codice: Seleziona tutto

$> a.out.funzione("stringa1","stringa2"); 
in bash darebbe un errore e in cpp pure
Avatar utente
dade-bian
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 597
Iscrizione: sabato 17 dicembre 2011, 12:08
Desktop: Gnome Shell
Distribuzione: Ubuntu/Debian
Sesso: Maschile
Località: Milano

Re: funzione otuput su file di testo C++

Messaggio da dade-bian »

momentaneamente, dato che mi mettono sempre alle strette con i tempi, preferisco fare un codice non ottimale, pure che lavora male ma che almeno fa quel che deve, ho riscritto la funzione da zero con un nome simile, ma che purtroppo fa la stessa cosa ...
qualche programmatore mi prenderà a parole nel caso rivedranno il codice, proprio per questo lascio la discussione aperta e non metto risolto.
per quanto riguarda "code.cpp funzione()..." ecc
era per rendere l'idea che il programma è in c++ ovvio non è eseguibile è un file codice.
Buona Community a tutti !!
DavideDaSerra
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 349
Iscrizione: domenica 15 febbraio 2009, 15:26
Desktop: xubuntu
Distribuzione: Ubuntu12.10 x86_64
Località: Da qualche parte in quel di Modena

Re: funzione otuput su file di testo C++

Messaggio da DavideDaSerra »

Da come avevi scritto non si capiva
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti