Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8

    [C++] Segmentation Fault

    salve, ragazzi, stavo facendo un programma che in base all'opzione da riga di comando esegue una determinata operazione sui parametri (o sul parametro) passati. quando passo l'opzione da due parametri va tutto come previso, ma se passo un'opzione da un parametro o un'opzione sbagliata (ho previsto la possibilità) mi da segmentation fault... questo deriva dal fatto che uso atof() prima sul primo argomento e poi sul secondo. ma se il primo argomento o il secondo non esistono mi da segmentation fault. c'è un modo per evitarlo? cioè per sapere la lunghezza dell'array argv[], tipo il len() del python?
    "Mai fidarti di un computer che non puoi gettare dalla finestra!"
    Steve Wozniak

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Il numero di argomenti è in argc.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    giusto, k cretino, thx
    "Mai fidarti di un computer che non puoi gettare dalla finestra!"
    Steve Wozniak

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    ok, adesso mi da questo errore il g++:
    codice:
    linus-gates@linus-gates-desktop:~/cpp_files$ g++ -Wall -o math math.cpp 
    math.cpp: In function ‘int main(int, char**)’:
    math.cpp:17: warning: unused variable ‘argomento1’
    math.cpp:21: warning: unused variable ‘argomento1’
    math.cpp:22: warning: unused variable ‘argomento2’
    math.cpp:32: error: ‘argomento1’ was not declared in this scope
    math.cpp:32: error: ‘argomento2’ was not declared in this scope
    math.cpp:36: error: ‘argomento1’ was not declared in this scope
    math.cpp:36: error: ‘argomento2’ was not declared in this scope
    math.cpp:40: error: ‘argomento1’ was not declared in this scope
    math.cpp:40: error: ‘argomento2’ was not declared in this scope
    math.cpp:44: error: ‘argomento1’ was not declared in this scope
    math.cpp:44: error: ‘argomento2’ was not declared in this scope
    math.cpp:48: error: ‘argomento1’ was not declared in this scope
    math.cpp:52: error: ‘argomento1’ was not declared in this scope
    linus-gates@linus-gates-desktop:~/cpp_files$

    ecco il codice, nn sembra avere nnt di strano...
    codice:
    /*math Main Source*/
    
    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<math.h>
    #include<string.h>
    
    using std::cout;
    using std::endl;
    
    int main(int argc, char* argv[])
    {
    	if (argc == 3)
    	{
    		float argomento1 = atof(argv[2]);
    	}
    	else if (argc == 4)
    	{
    		float argomento1 = atof(argv[2]);
    		float argomento2 = atof(argv[3]);
    	}
    	else
    	{
    		cout << "Usage: math [-p] [-m] [-t] [-d] [-q] [-v] argomento1 [argomento2]" << endl;
    		return 0;
    	}
    
    	if (strcmp(argv[1],"-p") == 0)
    	{
    		cout << argomento1 + argomento2 << endl;
    	}
    	else if (strcmp(argv[1],"-m") == 0)
    	{
    		cout << argomento1 - argomento2 << endl;
    	}
    	else if (strcmp(argv[1],"-t") == 0)
    	{
    		cout << argomento1 * argomento2 << endl;
    	}
    	else if (strcmp(argv[1],"-d") == 0)
    	{
    		cout << argomento1 / argomento2 << endl;
    	}
    	else if (strcmp(argv[1],"-q") == 0)
    	{
    		cout << argomento1 * argomento1 << endl;
    	}
    	else if (strcmp(argv[1],"-v") == 0)
    	{
    		cout << sqrt(argomento1) << endl;
    	}
    	else
    	{
    		cout << "Usage: math [-p] [-m] [-t] [-d] [-q] [-v] argomento1 [argomento2]" << endl;
    	}
    
    	return 0;
    }
    VVoVe:
    "Mai fidarti di un computer che non puoi gettare dalla finestra!"
    Steve Wozniak

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Qualcosa di strano c'è invece.
    Hai localizzato le variabili all'interno di blocchi if, di conseguenza esistono solo li, non fuori. Quando tenti di usarle da altre parti, hai l'errore.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    quindi dovrei prima dichiarare le variabili e poi assegnarle?
    "Mai fidarti di un computer che non puoi gettare dalla finestra!"
    Steve Wozniak

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    @shodan
    Grazie mille, ora funziona alla perfezione
    "Mai fidarti di un computer che non puoi gettare dalla finestra!"
    Steve Wozniak

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 © 2025 vBulletin Solutions, Inc. All rights reserved.