segmentation fault nell'uso degli argomenti di main

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
gattino_usb
Linux 2.4
Linux 2.4
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)
Contatta:

segmentation fault nell'uso degli argomenti di main

Messaggioda gattino_usb » sab ott 18, 2008 22:53

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "netbcast.h"
#include "maskdec.h"

int main(int argc, char *argv[])
{
char nb[] = "-nb";
char md[] = "-md";


   if (strcmp(argv[1],nb) == 0)
   {
      netbcast();
   }

   else if (strcmp(argv[1],md) == 0)
   {
      maskdec();
   }

   else
   {
       printf ("Per avere l'help, inserire come argomento -h \n");
   }

return 0;
}


compilo e mi da Segmentation Fault :evil:
dove sto sbagliando? :banghead:

Avatar utente
nyquist
Linux 2.4
Linux 2.4
Messaggi: 242
Iscritto il: sab ago 02, 2008 16:02
Nome Cognome: Cristiano Urban
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: KDE 4.10.5
Distribuzione: Fedora
Località: Gonars (UD)
Contatta:

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda nyquist » sab ott 18, 2008 23:09

Ciao,

non vorrei dire una cavolata, ma così di primo acchito mi verrebbe da fare:

prima del main ci metti:

Codice: Seleziona tutto

#define MAXLEN lunghezza_stringa

nel main ci metti:

Codice: Seleziona tutto

char nb[MAXLEN];

e poi:

Codice: Seleziona tutto

strcpy(nb,"-nb");


al posto di

Codice: Seleziona tutto

char nb[] = "-nb";


questo vale anche per l'altra stringa dichiarata sotto...

Premetto, non so se ho interpretato bene...

Avatar utente
gattino_usb
Linux 2.4
Linux 2.4
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)
Contatta:

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda gattino_usb » sab ott 18, 2008 23:15

mi spiego meglio, praticamente in base all'argomento del programma vorrei far eseguire una funzione diversa...

lo strcmp dovrebbe comparare l'argomento passato al programma con delle scelte standard

esempio ./a.out -nb

dovrebbe eseguire la funzione nb();

sono nuovo di queste funzioni di comparazione tra stringhe :S e non riesco a capire dove sia l'errore...

in pratica se non do nessun argomento al programma, mi va in segmentation fault, altrimenti funziona correttamente.

Avatar utente
nyquist
Linux 2.4
Linux 2.4
Messaggi: 242
Iscritto il: sab ago 02, 2008 16:02
Nome Cognome: Cristiano Urban
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: KDE 4.10.5
Distribuzione: Fedora
Località: Gonars (UD)
Contatta:

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda nyquist » sab ott 18, 2008 23:24

mmmhh...

Prova ad aggiungere:

Codice: Seleziona tutto

if(argc!=2)
{
   exit(EXIT_FAILURE);
}


subito dopo la dichiarazione delle stringhe nel main...

Avatar utente
gattino_usb
Linux 2.4
Linux 2.4
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)
Contatta:

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda gattino_usb » sab ott 18, 2008 23:31

nyquist ha scritto:mmmhh...

Prova ad aggiungere:

Codice: Seleziona tutto

if(argc!=2)
{
   exit(EXIT_FAILURE);
}


subito dopo la dichiarazione delle stringhe nel main...


mi hai risolto il problema ;) grazie mille...

praticamente se il numero di argomenti non è due (il nome del programma ed il secondo argomento) esce dando il valore della costante EXIT_FAILURE? ho capito bene?

grazie mille comunque :)

Avatar utente
nyquist
Linux 2.4
Linux 2.4
Messaggi: 242
Iscritto il: sab ago 02, 2008 16:02
Nome Cognome: Cristiano Urban
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: KDE 4.10.5
Distribuzione: Fedora
Località: Gonars (UD)
Contatta:

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda nyquist » sab ott 18, 2008 23:37

Sì esattamente!
Di nulla figurati!


Ciao!


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti