Repository 32bit  Forum
Repository 64bit  Wiki

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.

segmentation fault nell'uso degli argomenti di main

Messaggioda gattino_usb » sab ott 18, 2008 21: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
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda nyquist » sab ott 18, 2008 22: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
nyquist
Linux 2.4
Linux 2.4
 
Messaggi: 222
Iscritto il: sab ago 02, 2008 15:02
Località: Gonars (UD)
Nome Cognome: Cristiano Urban
Slackware: 14.1 x86
Kernel: 3.10.17-smp
Desktop: KDE 4.10.5
Distribuzione: CentOS, Fedora

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda gattino_usb » sab ott 18, 2008 22: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
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda nyquist » sab ott 18, 2008 22:24

mmmhh...

Prova ad aggiungere:
Codice: Seleziona tutto
if(argc!=2)
{
   exit(EXIT_FAILURE);
}


subito dopo la dichiarazione delle stringhe nel main...
Avatar utente
nyquist
Linux 2.4
Linux 2.4
 
Messaggi: 222
Iscritto il: sab ago 02, 2008 15:02
Località: Gonars (UD)
Nome Cognome: Cristiano Urban
Slackware: 14.1 x86
Kernel: 3.10.17-smp
Desktop: KDE 4.10.5
Distribuzione: CentOS, Fedora

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda gattino_usb » sab ott 18, 2008 22: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
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

Re: segmentation fault nell'uso degli argomenti di main

Messaggioda nyquist » sab ott 18, 2008 22:37

Sì esattamente!
Di nulla figurati!


Ciao!
Avatar utente
nyquist
Linux 2.4
Linux 2.4
 
Messaggi: 222
Iscritto il: sab ago 02, 2008 15:02
Località: Gonars (UD)
Nome Cognome: Cristiano Urban
Slackware: 14.1 x86
Kernel: 3.10.17-smp
Desktop: KDE 4.10.5
Distribuzione: CentOS, Fedora


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite