Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81

    Problema Con Argv E Argc........sto Impazzendo

    Salve ragazzi,sto provando a disporre in matrice dei valori inseriti direttamente dal prompt dei comandi.Pensavo si facesse così:
    codice:
    #include<stdio.h>
    #define R 3
    #define C 3
    
    int matrix[R][C];
    void crea(int[]);
    void stampa();
    main(int argc,int *argv[])
    {
          crea(argv[1]);
          stampa();
          getch();
          
    }
    void crea(int line[])
    {
          int r,c,i=0;
          for(r=0;r<R;r++)
            for(c=0;c<C;c++)
                matrix[r][c]=line[i++];
    }
    void stampa()
    {
         int c,r;
         for(r=0;r<R;r++)
         {
             for(c=0;c<C;c++)
             printf("%d\t",matrix[r][c]);
             printf("\n");
         }
    }
    ma come output mi restituisce una serie di numeri senza alcun senso....
    Qual'è l'errore?
    Grazie anticipatamente.

  2. #2
    Qual'è l'errore?
    Il tuo codice ne contiene molti. Ti sei chiesto a cosa serva argc?

    Quale criterio vuoi adottare per inserire argc elementi in un vettore bidimensionale?
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: Problema Con Argv E Argc........sto Impazzendo

    Guarda che argv[] non e' un vettore di puntatori ad interi, come hai scritto in

    int *argv[]

    ma e' un array di puntatori a stringhe

    char *argv[]

    e il primo parametro utente e' quello con indice 1 ...

    Quindi ...

    codice:
    #include <stdio.h>
    
    #define R 3
    #define C 3
    
    int matrix[R][C];
    
    void crea(char *line[])
    {
          int r,c,i=1;
          for(r=0;r<R;r++)
            for(c=0;c<C;c++)
                matrix[r][c]= atoi(line[i++]);
    }
    
    void stampa()
    {
         int c,r;
         for(r=0;r<R;r++)
         {
             for(c=0;c<C;c++)
    	printf("%d\t",matrix[r][c]);
             printf("\n");
         }
    }
     
    main(int argc, char *argv[])
    {
          crea(argv);
          stampa();
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81
    Originariamente inviato da pallinopinco
    Il tuo codice ne contiene molti. Ti sei chiesto a cosa serva argc?

    Quale criterio vuoi adottare per inserire argc elementi in un vettore bidimensionale?
    Esatto, hai detto bene, non so a cosa serve; L'ho usato perchè ho preso spunto da un programma nel libro..
    Dopo che me lo hai fatto notare, ho pensato di togliero visto che mi sembrava che in questo programma non servisse.. Così facendo pero' non compilava neanche..
    Mi puoi spiegare l'uso di argc?
    Ti ringrazio in anticipo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81

    Re: Re: Problema Con Argv E Argc........sto Impazzendo

    Originariamente inviato da oregon
    Guarda che argv[] non e' un vettore di puntatori ad interi, come hai scritto in

    int *argv[]

    ma e' un array di puntatori a stringhe

    char *argv[]

    e il primo parametro utente e' quello con indice 1 ...

    Quindi ...

    codice:
    #include <stdio.h>
    
    #define R 3
    #define C 3
    
    int matrix[R][C];
    
    void crea(char *line[])
    {
          int r,c,i=1;
          for(r=0;r<R;r++)
            for(c=0;c<C;c++)
                matrix[r][c]= atoi(line[i++]);
    }
    
    void stampa()
    {
         int c,r;
         for(r=0;r<R;r++)
         {
             for(c=0;c<C;c++)
    	printf("%d\t",matrix[r][c]);
             printf("\n");
         }
    }
     
    main(int argc, char *argv[])
    {
          crea(argv);
          stampa();
    }
    Perfetto con questa correzione funziona..
    Ma mi sovviene un dubbio.. Non esiste quindi un vettore di puntatori ad interi?
    Credo di no, altrimenti perchè avremmo usato un puntatore a caratteri per poi trasformare la stringa in intero? Giusto?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: Re: Re: Problema Con Argv E Argc........sto Impazzendo

    Originariamente inviato da maurymg
    Perfetto con questa correzione funziona..


    Ma mi sovviene un dubbio.. Non esiste quindi un vettore di puntatori ad interi?
    No ... nel senso che argv NON e' un vettore di puntatori ad interi ...

    Credo di no, altrimenti perchè avremmo usato un puntatore a caratteri per poi trasformare la stringa in intero? Giusto?
    Ovviamente ... ma non potrebbe essere cosi' dato che in input hai una sequenza di "stringhe alfanumeriche" ...

    Mi sembra che tu stia procedendo "a tentoni" ... queste cose sono chiarissime in un qualsiasi libro di programmazione e stanno nei primi capitoli ... perche' non ne segui uno ...? (e non mi dire che lo stai facendo ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81

    Re: Re: Re: Re: Problema Con Argv E Argc........sto Impazzendo

    .

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81

    Re: Re: Re: Re: Problema Con Argv E Argc........sto Impazzendo

    Originariamente inviato da oregon

    Ovviamente ... ma non potrebbe essere cosi' dato che in input hai una sequenza di "stringhe alfanumeriche" ...
    Ovvio non ci avevo pensato..
    Io mi sto appoggiando ad un libro, ma per es. quando spiega l'argc dice:

    Il primo argomento del main (chiamato per convezione argcm da argoment count) è il numero di argomenti presenti nella riga di comando;
    Subito dopo c'è l'esempio di un programma..
    Io ho quindi pensato di adoperare sull'es. del programma argv e argc, tali cose a un programma in cui potessi ripassare cio' che ho recentemente "imparato".


    Ma da questa spiegazione come faccio ad es. a capire perchè è necessario l'uso di argc?
    Perchè è necessario?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non ho capito quasi nulla di quello che hai scritto ...

    Comunque io parlavo di argv e non di argc.

    argv e' il vettore di puntatori a stringhe (che sono le stringhe che passi al tuo programma sulla linea di avvio, escluso l'elemento argv[0] che e' il nome e il percorso dello stesso eseguibile ...);

    argc, invece, e' un numero e rappresenta il numero di argomenti presenti nella linea di comando quando il programma e' stato avviato (ovvero, ti indica l'indice massimo da utilizzare nel vettore argv)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81
    Si, il discorso di argc era in risposta a pallinopinco..
    Visto che nel mio programma non viene adoperato (almeno a quanto vedo io) perchè è necessario e non si puo' includere tra le parentesi del main soltanto argv?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.