PDA

View Full Version : [C++] Lanciare programma da codice c++


Sbrocca88
03-11-2010, 08:56
Ciao a tutti sono alle prime armi con la programmazione.
Devo fare un programma in c++ che ad un certo punto mi deve lanciare una applicazione chiamata audacity.
Io uso windows però il programma viene lanciato da una shell chiamata cygwin che mi emula linux.
è da un sacco che provo a sbatterci la testa senza riuscirci.
Qualcuno può aiutarmi?!
Ecco il mio programma

#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;
void nuovoprofilo();

int main()
{
char ch, nome_cognome[50];
cout << "Nuovo (n), Salvare (s) Lanciare (r) Uscire (q)" << endl;
cin >> ch;
while (ch!='q')
{
switch (ch)
{
case 'n':
cout << "Inserire nome e cognome" << endl;
cin.getline(nome_cognome,50); //perchè non funziona?!
cin.getline(nome_cognome,50);
nuovoprofilo();
break;
case 's':
//salvaprofilo();
break;
case 'r':
//lanciaprofilo();
break;
default : cout << "Nuovo (n), Salvare (s) Lanciare (r) Uscire (q)" << endl;
}
cin >> ch;
}
return 0;
}
void nuovoprofilo()
{
ofstream fout ("sample.grammar");
fout << "S : NS_B COMANDO OGGETTO NS_E" << endl << "S : NS_B RICHIESTA NS_E" << endl;
fout.close();
ofstream fout2 ("sample.voca");
fout2 << "% NS_B" << endl << "<s> sil" << endl << endl << "% NS_E" << endl << "</s> sil" << endl << endl << "% COMANDO" << endl << "ACCENDI a cc e n d i" << endl << "SPEGNI s p e ggn i" << endl << endl << "% OGGETTO" << endl << "LUCE l u c e" << endl << "TEIERA t e j e r a" << endl << endl << "% RICHIESTA" << endl << "AIUTO a j u t o" << endl;
fout2.close();
cout << "Registra la tua voce";
//system("\"C:\\cygwin\\home\\Ciucci\\voxforge\\auto_ita\\prompts\"");
system("\"C:\\Program Files\\Audacity\\audacity.exe\"");
}

La chiamata della mia funzione audacity l'ho messa nella funzione void nuovoprofilo() utilizzando la funzione system.
Ma non funziona.
Mi dice:
sh : C:\\Program Files\\Audacity\\audacity.exe command not found

!fazz
03-11-2010, 09:00
system funziona come il vecchio dos quindi 8+3
prova con progra~1 al posto di program files

Sbrocca88
03-11-2010, 09:27
#include <iostream>
#include <stdlib.h>
#include <fstream>
#define MAX 50
using namespace std;
void nuovoprofilo();

int main()
{
char ch, nome_cognome[MAX];
cout << "Nuovo (n), Salvare (s) Lanciare (r) Uscire (q)" << endl;
cin >> ch;
while (ch!='q')
{
switch (ch)
{
case 'n':
cout << "Inserire nome e cognome" << endl;
cin.getline(nome_cognome,MAX); //perchè non funziona?!
cin.getline(nome_cognome,MAX);
nuovoprofilo();
break;
case 's':
//salvaprofilo();
break;
case 'r':
//lanciaprofilo();
break;
default : cout << "Nuovo (n), Salvare (s) Lanciare (r) Uscire (q)" << endl;
}
cin >> ch;
}
return 0;
}
void nuovoprofilo()
{
ofstream fout ("sample.grammar");
fout << "S : NS_B COMANDO OGGETTO NS_E" << endl << "S : NS_B RICHIESTA NS_E" << endl;
fout.close();
ofstream fout2 ("sample.voca");
fout2 << "% NS_B" << endl << "<s> sil" << endl << endl << "% NS_E" << endl << "</s> sil" << endl << endl << "% COMANDO" << endl << "ACCENDI a cc e n d i" << endl << "SPEGNI s p e ggn i" << endl << endl << "% OGGETTO" << endl << "LUCE l u c e" << endl << "TEIERA t e j e r a" << endl << endl << "% RICHIESTA" << endl << "AIUTO a j u t o" << endl;
fout2.close();
cout << "Registra la tua voce";
system("\"C:\\cygwin\\home\\Ciucci\\voxforge\\auto_ita\\prompts\"");
system("\"C:\\proga~1\\Audacity\\audacity.exe\"");
}


Ecco il mio codice modificato.
Mi da lo stesso errore. è da due giorni che ci sono sopra e non riesco a risolvere. Non sono più andato avanti

!fazz
03-11-2010, 09:38
ma come mai lanci da cygwin?

Sbrocca88
03-11-2010, 09:42
Ah non ne ho idea.
Però vogliono che io lo faccia partire da cygwin.
Che robe...

!fazz
03-11-2010, 10:17
Ah non ne ho idea.
Però vogliono che io lo faccia partire da cygwin.
Che robe...

allora devo lanciarlo dalla riga di cygwin
almeno la shell di cygwin ti parte?

Sbrocca88
03-11-2010, 10:54
Allora ti spiego.
Ho lanciato il mio programma c++ da windows. Nel mio programma windows ho messo il seguente codice:
system("\"C:\\cygwin\\Cygwin.bat\"");
che serve a richiamare cygwin.
Adesso ho altre domande purtroppo.
1) dovrei creare delle normalissime cartelle. Esiste qualche comando per creare le mie cartelle dove voglio io?!
2) è possibile, mediante il mio codice, passare dalla shell del mio programma c++ a quella di cygwin e viceversa?! Quando il mio programma arriva al codice che ho scritto sopra, la shell del mio programma si trasforma in cygwin. Una volta trasformato in cygwin come faccio a fargli eseguire gli script voluti senza dover digitare nulla nella shell?! Mi è stato richiesto che avvenga tutto in automatico. Ovvero, passo in cygwin, faccio svolgere le operazioni volute nel compilatore cygwin, torno in windows.
Spero di essermi spiegato bene.
Ringrazio tutti.
Un saluto
Giovanni

!fazz
03-11-2010, 12:16
Allora ti spiego.
Ho lanciato il mio programma c++ da windows. Nel mio programma windows ho messo il seguente codice:
system("\"C:\\cygwin\\Cygwin.bat\"");
che serve a richiamare cygwin.
Adesso ho altre domande purtroppo.
1) dovrei creare delle normalissime cartelle. Esiste qualche comando per creare le mie cartelle dove voglio io?!
2) è possibile, mediante il mio codice, passare dalla shell del mio programma c++ a quella di cygwin e viceversa?! Quando il mio programma arriva al codice che ho scritto sopra, la shell del mio programma si trasforma in cygwin. Una volta trasformato in cygwin come faccio a fargli eseguire gli script voluti senza dover digitare nulla nella shell?! Mi è stato richiesto che avvenga tutto in automatico. Ovvero, passo in cygwin, faccio svolgere le operazioni volute nel compilatore cygwin, torno in windows.
Spero di essermi spiegato bene.
Ringrazio tutti.
Un saluto
Giovanni

puoi usare il comando dos md tramite system