Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    214

    [C] Passare N parametri ad una funzione

    Ciao a tutti ragazzi, devo scrivere una semplice funzione che, invocata dalla shell con un numero di parametri variabili, mi stampi tutti i parametri.
    Il concetto è abbastanza semplice, diciamo che l'invocazione di

    "fun par1 par2 par3"

    sulla shell, mi comporta un output così:

    par1
    par2
    par3

    So bene che potrei utilizzare una funzione che preveda l'uso di un intero che mi dica quanti parametri immetto, e un puntatore ad un vettore di stringhe che contiene i parametri, quindi:

    void fun(int n, char** arg_list);

    ma io vorrei fare esperienza con le funzioni offerte dalla libreria stdarg.h . Qualcuno potrebbe darmi qualche suggerimento su come procedere? La prima versione di questa funzione è questa:

    codice:
    #include <stdio.h> 
    #include <stdarg.h>  
    
    void main(int n, char* first, ...){ 	
    va_list ap;  	
    char *copy=NULL, *copy1 = NULL;  	
    	
    if(n>=1){ 		
            va_start(ap, first);  		
            copy = va_arg(ap, char*);  		
            copy1 = va_arg(ap, char*);  		
            printf("%s\n", copy);  		
            printf("%s\n", copy1);  		
            va_end(ap);  
    } 
    return;  
    }
    L'ho scritta in modo che prenda in ingresso solo 2 parametri, solo per provare, ma produce un output incomprensibile...Mi dareste una mano? Grazie, confido in voi!

  2. #2
    Il main accetta un intero e un puntatore ad un array di stringhe, non è che puoi cambiare il suo prototipo come ti pare...
    Inoltre, in generale l'idea di usare funzioni con numero di argomenti variabile in questa situazione non ha molto senso: le chiamate con numero di argomenti variabile vengono risolte a compile time, mentre il parsing della tua riga di comando avviene a runtime, quando ormai è già fissato il numero di argomenti che passi alla funzione. La cosa più sensata resta passare un array di stringhe.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    214
    Va bene allora rimango sull'intero e l'array di stringhe! Era solo per capire praticamente il funzionamento di una libreria che non avevo mai usato

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.