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++ - Problema System con concatenazione stringhe.
Forum - C/C++ - Problema System con concatenazione stringhe.

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 21:55
Venerdì, 03/07/2009
Ciao, sono da poco alle prese con il C++ ed ho il seguente problema.

Analizzando questo codice 1:

Codice sorgente - presumibilmente C++

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.     printf("Insert the host or IP:\n");
  10.     char a;
  11.     scanf("%d", &a);
  12.     system("ping -t -l 1000.000 " + a);
  13.     system("PAUSE");
  14.     return EXIT_SUCCESS;
  15. }



e questo codice 2:

Codice sorgente - presumibilmente C++

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.     system("ping -t -l 1000.000 google.it");
  10.     system("PAUSE");
  11.     return EXIT_SUCCESS;
  12. }




Allora, io voglio eseguire un comando dos, con agganciato ad esso la stringa inserita dall' utente (se analizzate il codice 1 si può capire cosa voglio fare)
Solo che nel codice 1, durante l' esecuzione quando arrivo al comando System, mi dice nella console:

La sintassi del nome del file o della directory non è corretta.

Cosa che non succede con il codice 2 visto che non chiede la stringa all' utente ma esegue tranquillamente il comando?

Perchè e come posso risolverlo?

Ultima modifica effettuata da pinguino il 03/07/2009 alle 21:58
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:03
Venerdì, 03/07/2009
A parte il fatto che hai usato un singolo char e non un array di char (come dovrebbe essere in C), se programmi in C++ e' ovvio usare le stringhe del C++ (che ti consiglio di studiare) e l'I/O del C++ ... quindi

Testo quotato


#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
    cout << "Insert the host or IP:" << endl;
    
    string a;
    cin >> a;
    a = "ping -t -l 1000.000 " + a;
    
    system(a.c_str());
    
    system("PAUSE");
    return EXIT_SUCCESS;
}


PM Quote
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 22:07
Venerdì, 03/07/2009
Il linguaggio che sto usando è C++ però si possono inserire stringhe di C anche in questo...

Ultima modifica effettuata da pinguino il 03/07/2009 alle 22:13
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:11
Venerdì, 03/07/2009
Testo quotato

Postato originariamente da pinguino:

Il linguaggio che sto usando è C++ però si possono inserire stringhe di C anche in questo...



Sì ... ma se si usa il C++ e' normale utilizzare le caratteristiche del C++ e non quelle del C ...

A cosa serve usare iostream se non utilizzi cin e cout ? E cosi' via ?

In caso contrario, utilizza il C e posta nel forum di C ....

PM Quote
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 22:13
Venerdì, 03/07/2009
Comunque questa cosa mi ha fatto capire i vantaggi che si hanno utilizzando codice C++ invece che C...

E' che l' unico libro che ho a disposizione tratta di C ed ho preso spunto da li, al + presto ne comprerò uno sul C++...

Ultima modifica effettuata da pinguino il 03/07/2009 alle 22:14
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:15
Venerdì, 03/07/2009
Testo quotato

Postato originariamente da pinguino:

Comunque questa cosa mi ha fatto capire i vantaggi che si hanno utilizzando codice C++ invece che C...



Beh ... ci saranno dei motivi per cui si chiama C++ ... no?

E ovviamente, non sono solo quelli, ma ben altri ...

Bisogna studiarli ed utilizzarli, altrimenti si continua a programmare in C e non in C++ ...

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 9:36
Domenica, 05/07/2009

ebbravo il nostro pinguino, s'è fatto aiutare a creare un ping flooder, e tutti gli rispondono
:cheer: :cheer: :cheer: :cheer: :cheer: :cheer:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:42
Domenica, 05/07/2009
Testo quotato

Postato originariamente da HeDo:


ebbravo il nostro pinguino, s'è fatto aiutare a creare un ping flooder, e tutti gli rispondono
:cheer: :cheer: :cheer: :cheer: :cheer: :cheer:



Hedo ... forse ti sfugge che sta usando il ping del DOS e quindi non sta "creando" proprio nulla ...

Altra cosa e' se avesse fatto un programma apposito, cosa che mi avrebbe sicuramente fatto evitare di rispondere ...

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 11:48
Lunedì, 06/07/2009
Scusate, al di la della preferenza tra stringhe C e C++, io vedo anche che nel codice c'e' un %d che dovrebbe stare per decimal...
quello corretto non dovrebbe essere %s ( ossia string )?

Ciao. :k:

Luigi

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo