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++ - Errore relativo agli argomenti da riga di comando
Forum - C/C++ - Errore relativo agli argomenti da riga di comando

Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 17:54
Domenica, 15/08/2010
oggi ho provato a fare un semplice programma che mi sommasse tutti gli elementi ricevuti dalla riga di comando...la compilazione andava a buon fine ma quando eseguivo l'applicazione terminava a causa di un comportamento indefinito....allora ho provato a copiare pari pari l'esempio del libro e mi dava lo stesso errore:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main(int argc,char *argv[])
  4. {
  5.     char **p;
  6.     for(p=&argv[1];*p!=NULL;p++)
  7.     {
  8.  
  9.      printf("%s\n",*p);
  10.      }
  11. }


la finestra di errore è allegata...

cosa c'è che non va?

utilizzo dev-cpp come IDE....


Alex ha allegato un file: Clipboard04.gif (8084 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Alex il 15/08/2010 alle 17:55
PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 17:01
Martedì, 17/08/2010
si ma con quel programma non puoi sommare i numeri dati da riga di comando :nono:

PM
Avatar
matteo88roma (Normal User)
Rookie


Messaggi: 25
Iscritto: 15/12/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 9:08
Sabato, 28/08/2010
Testo quotato

Postato originariamente da Alex:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main(int argc,char *argv[])
  4. {
  5.     char **p;
  6.     for(p=&argv[1];*p!=NULL;p++)
  7.     {
  8.  
  9.      printf("%s\n",*p);
  10.      }
  11. }





Riguardo l'IDE, cestinalo, è vecchio (anche il compilatore) ed estremamente "buggato".
Inoltro il progetto è fermo da almeno 3-4 anni.
Per programmare in C non esiste miglior ambiente di Linux/Unix.
Se tuttavia preferisci Windows, scarica Cygwin e utilizza un editor di testo
avanzato (io utilizzo Notepad++, fantastico!).
Tornando al codice...
Non vedo il motivo di utilizzare un'altro puntatore.
Spero che questo codice possa esserti di aiuto ;)


Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char* argv[]) {
  5.  
  6.         if (argc == 1) {
  7.                
  8.                 printf("Utilizzo: sommatore NUM1 NUM2... NUMn\n");
  9.                 return EXIT_SUCCESS;
  10.  
  11.         } else {
  12.                
  13.                 int index=1,sum=0;
  14.                 for(;index<argc;index++) {
  15.                         //http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/
  16.                         int tmp = atoi(argv[index]);
  17.                         if (!tmp) {
  18.                                 printf("Argomento n.%d non valido: %s!\n",index.argv[index]);
  19.                                  return EXIT_FAILURE;
  20.                         } else {
  21.                                 sum += tmp;
  22.                         }
  23.                         printf("Somma totale: %d\n",sum);
  24.                         return EXIT_SUCCESS;
  25.                 }
  26.         }
  27. }



PM
Avatar
jack92 (Member)
Pro


Messaggi: 100
Iscritto: 06/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:13
Domenica, 15/08/2010
Ciao , a me il tuo codice funziona bene , non so se era quello che volevi ma io come output ottengo ... (guarda allegato) , l' exe l'ho eseguito con il prompt dei comandi (CMD.exe)


jack92 ha allegato un file: Immagine.JPG (23868 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da jack92 il 15/08/2010 alle 19:15
PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
0
Down
V
Segnala al moderatore
Postato alle 22:32
Domenica, 15/08/2010
ho risolto...avevo smanettato con le opzioni di compilazione e mi ero dimenticato di ripristinarle....:rotfl:


PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
0
Down
V
Segnala al moderatore
Postato alle 18:31
Martedì, 17/08/2010
Testo quotato

Postato originariamente da Pitagora:

si ma con quel programma non puoi sommare i numeri dati da riga di comando :nono:



sono partito con una versione che mi faceva la somma, poi siccome non andava ho copiato per filo e per segno l'esempio del libro che stampa gli argomenti ricevuti da riga da comando e non andava ancora...
colpa del compilatore (o meglio mia che ho cambiato delle impostazioni)....

PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
0
Down
V
Segnala al moderatore
Postato alle 21:58
Sabato, 28/08/2010
In effetti sto valutando di installare una distro per sviluppare programmi in c...

comunque dev-cpp non è poi così male.....cosa ha che non va?

PM
Avatar
matteo88roma (Normal User)
Rookie


Messaggi: 25
Iscritto: 15/12/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 7:07
Domenica, 29/08/2010
Testo quotato

Postato originariamente da Alex:

In effetti sto valutando di installare una distro per sviluppare programmi in c...

comunque dev-cpp non è poi così male.....cosa ha che non va?



Per iniziare, è fantastico (nei bei vecchi tempi, ammetto di averlo usato anche io :rotfl:).
Purtroppo è un progetto datato (fermi alla versione 4.9.9.2, se non erro),
e il compilatore con la quale viene fornito è abbastanza vecchio.
Programmare senza IDE, agli inizi, aiuta a comprendere i meccanismi
alla base della compilazione e del linking, fondamentali per uno studio accurato.

Sotto Windows poi la programmazione C è scomoda. L'unica maniera decente di farla è utilizzare il compilatore C++ della Microsoft (che trovi in Visual Studio Express 2010).
Cygwin è un tentativo (riuscito bene si può dire) di incapsulare un ambiente virtuale dentro Linux ma non è nativo, e MINGW (progetto nativo invece) è anch'esso datato.
Se vuoi programmare in Windows, allora dovresti imparare linguaggi come il C#,VB.NET,il C++ con le estensioni Microsoft, etc...

Se invece ti muovi in ambienti *NIX, le possibilità sono infinite.
Di base trovi il C (il kernel Linux, in gran parte, è scritto in C).
Trovi anche il C++, il Python, il Perl, gli script per i terminali.
E poi la programmazione Linux è tutta un'altra cosa :hail:
Mi fermo qui per evitare di uscire troppo dal tema del thread. :yup:

PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
-1
Down
V
Segnala al moderatore
Postato alle 14:45
Domenica, 29/08/2010
Testo quotato

Postato originariamente da matteo88roma:

Testo quotato

Postato originariamente da Alex:

In effetti sto valutando di installare una distro per sviluppare programmi in c...

comunque dev-cpp non è poi così male.....cosa ha che non va?



Per iniziare, è fantastico (nei bei vecchi tempi, ammetto di averlo usato anche io :rotfl:).
Purtroppo è un progetto datato (fermi alla versione 4.9.9.2, se non erro),
e il compilatore con la quale viene fornito è abbastanza vecchio.
Programmare senza IDE, agli inizi, aiuta a comprendere i meccanismi
alla base della compilazione e del linking, fondamentali per uno studio accurato.


in effetti su questo ti dò ragione...un IDE è più facile da gestire che un compilatore a riga di comando...ho provato ha compilare hello world con gcc incluso in cygiwn ma non ci sono riuscito:-|
Testo quotato


Sotto Windows poi la programmazione C è scomoda. L'unica maniera decente di farla è utilizzare il compilatore C++ della Microsoft (che trovi in Visual Studio Express 2010).
Cygwin è un tentativo (riuscito bene si può dire) di incapsulare un ambiente virtuale dentro Linux ma non è nativo, e MINGW (progetto nativo invece) è anch'esso datato.
Se vuoi programmare in Windows, allora dovresti imparare linguaggi come il C#,VB.NET,il C++ con le estensioni Microsoft, etc...

Se invece ti muovi in ambienti *NIX, le possibilità sono infinite.
Di base trovi il C (il kernel Linux, in gran parte, è scritto in C).
Trovi anche il C++, il Python, il Perl, gli script per i terminali.
E poi la programmazione Linux è tutta un'altra cosa :hail:
Mi fermo qui per evitare di uscire troppo dal tema del thread. :yup:



ho trovato però un IDE che a prima vista sembra molto funzionale cercando un pò su internet...si chiama NetBeans....sto cercando peròp di farlo funzionare ma non c'è verso=)


cmq grazie per i consigli=)

PM