Oppure

Loading
15/08/10 15:54
Alex
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:

#include <stdio.h>

int main(int argc,char *argv[])
{
    char **p;
    for(p=&argv[1];*p!=NULL;p++)
    {

     printf("%s\n",*p);
     }
}

la finestra di errore è allegata...

cosa c'è che non va?

utilizzo dev-cpp come IDE....
Ultima modifica effettuata da Alex 15/08/10 15:55
aaa
15/08/10 17:13
jack92
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)
Ultima modifica effettuata da jack92 15/08/10 17:15
aaa
15/08/10 20:32
Alex
ho risolto...avevo smanettato con le opzioni di compilazione e mi ero dimenticato di ripristinarle....:rotfl:

aaa
17/08/10 15:01
Pitagora
si ma con quel programma non puoi sommare i numeri dati da riga di comando :nono:
aaa
17/08/10 16:31
Alex
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)....
aaa
28/08/10 7:08
matteo88roma
Postato originariamente da Alex:

#include <stdio.h>

int main(int argc,char *argv[])
{
    char **p;
    for(p=&argv[1];*p!=NULL;p++)
    {

     printf("%s\n",*p);
     }
}



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 ;)


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]) {

        if (argc == 1) {
                
                printf("Utilizzo: sommatore NUM1 NUM2... NUMn\n");
                return EXIT_SUCCESS;

        } else {
                
                int index=1,sum=0;
                for(;index<argc;index++) {
                        //http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/
                        int tmp = atoi(argv[index]);
                        if (!tmp) {
                                printf("Argomento n.%d non valido: %s!\n",index.argv[index]);
                                 return EXIT_FAILURE;
                        } else {
                                sum += tmp;
                        }
                        printf("Somma totale: %d\n",sum);
                        return EXIT_SUCCESS;
                }
        }
}

aaa
28/08/10 19:58
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?
aaa
29/08/10 5:07
matteo88roma
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:
aaa