Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - come mai nn funziona questo programma?
Forum - C/C++ - come mai nn funziona questo programma?

Avatar
lorenzoscarrone (Normal User)
Pro


Messaggi: 92
Iscritto: 16/11/2011

Segnala al moderatore
Postato alle 17:49
Martedì, 24/01/2012
nn so come far funzionzare questo programma qualcuno mi può aiutare? grazie ;)
Codice sorgente - presumibilmente C#

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4.     char* testo[15];
  5.     printf("Benvenuto in un MS-Dos improvvisato \n");
  6.     cin >> testo[15];
  7.     system(testo[15]);
  8.     return main();
  9. }


PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 18:23
Martedì, 24/01/2012
Tieni conto che se tu avessi anche inizializzato l' array (come avresti dovuto fare)
Codice sorgente - presumibilmente C/C++

  1. char comando[15] = "\0";


Avresti un array di 15 variabili a 8bit, quindi
comando[0] = '\0';
comando[1] = '\0';
.......
comando[14] = '\0';

eseguendo un cin e ipotizzando che l' utente digiti dir C: otterresti:
comando[0] = 'd';
comando[1] = 'i';
comando[2] = 'r';
comando[3] = ' ';
comando[4] = 'C';
comando[5] = ':';
comando[6] = '\0';
............
comando[14] = '\0';

quindi tu facendo system(comando[15]); hai passato una variabile ad 8 bit (char) che non esiste! E se anche esistesse (avessi cambiato char comando[15] in char comando[16]) avresti passato un solo carattere. La soluzione più semplice sarabbe mettere system(*comando); Attenzione che nel caso il comando superi i 15 caratteri non funzionerà ugualmente ed è proprio per questo che ti consiglio (e ti ho consigliato) di utilizzare un dato di tipo string........

grazie raga! - lorenzoscarrone - 24/01/12 18:37
PM
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Up
1
Down
V
Segnala al moderatore
Postato alle 17:59
Martedì, 24/01/2012
non puoi accedere a testo[15] dato che l'array va da 0 a 14...

Ultima modifica effettuata da anthony015 il 24/01/2012 alle 18:18
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 18:14
Martedì, 24/01/2012
Dovresti provare così:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main(/*......*/)
  7. {
  8.     string cmd;
  9.     cout << "..................." << endl;
  10.     cin >> cmd;
  11.     system(cmd);
  12.     return 0;
  13. }



Questo dovrebbe funzionare, non lo ho provato.........

cannot convert `std::string' to `const char*' for argument `1' to `int system(const char*)' - lorenzoscarrone - 25/01/12 22:22
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 11:00
Giovedì, 26/01/2012
Codice sorgente - presumibilmente C/C++

  1. char *cmd = "\0";
  2. cin >> cmd;
  3. system((const char*)cmd);


Prova così

PM