Pagina 1 di 1

segmentation fault nell'uso degli argomenti di main

Inviato: sab 18 ott 2008, 22:53
da gattino_usb

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:

Re: segmentation fault nell'uso degli argomenti di main

Inviato: sab 18 ott 2008, 23:09
da nyquist
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...

Re: segmentation fault nell'uso degli argomenti di main

Inviato: sab 18 ott 2008, 23:15
da gattino_usb
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.

Re: segmentation fault nell'uso degli argomenti di main

Inviato: sab 18 ott 2008, 23:24
da nyquist
mmmhh...

Prova ad aggiungere:

Codice: Seleziona tutto

if(argc!=2)
{
   exit(EXIT_FAILURE);
}
subito dopo la dichiarazione delle stringhe nel main...

Re: segmentation fault nell'uso degli argomenti di main

Inviato: sab 18 ott 2008, 23:31
da gattino_usb
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 :)

Re: segmentation fault nell'uso degli argomenti di main

Inviato: sab 18 ott 2008, 23:37
da nyquist
Sì esattamente!
Di nulla figurati!


Ciao!