Problema con argv

di il
7 risposte

Problema con argv

Ciao a tutti, ho un programma da scrivere in cui da linea di comando devo inserire un file .txt e poi uno tra questi flag: -a, -b, -c.
Svolgendo il programma arrivo al punto in cui devo vedere che flag è stato inserito da linea di comando per procedere in modi differenti quindi, devo prendere il contenuto di argv[2] e confrontarlo con altre stringhe contenenti -a o -b o -c!!
Come si fa a scriverlo?

7 Risposte

  • Re: Problema con argv

    Il confronto lo fai con la funzione strcmp
  • Re: Problema con argv

    E' quello che ho fatto ma mi viene fuori un warning:
    comparison between pointer and integer [enabled by default]

    L'if che ho scritto è questo: if((strcmp(argv[2],a))==NULL)
    con a definita come: char a[]="-a";

    Quando faccio partire il programma mi fa abortire il tutto.
    Perciò il primo pensiero che mi è venuto è che quello non fosse corretto! Anche perchè non ho altri warning e le altre funzioni mi sembrano scritte correttamente!
  • Re: Problema con argv

    Perché

    ==NULL

    ?

    Hai letto cosa restituisce la funzione strcmp ?
  • Re: Problema con argv

    Già, hai ragione!!
    Ho messo 0 e il warning è sparito!! Il programma continua a non funzionare però ma a questo punto credo che sia da escludere un problema in quell'if!!
    Proverò a mettere qualche printf per capire da dove parte il problema!!

    Grazie oregon per la correzione
  • Re: Problema con argv

    Se nel nome o nel percorso del file .txt c'è uno spazio allora devi racchiuderlo tra virgolette, altrimenti non viene considerato come un singolo argomento.

    programma "file 1.txt" -a
  • Re: Problema con argv

    Per ora ho visto che funziona il riconoscimento dei caratteri -a, -b ecc
    il problema quindi sta all'interno dei vari casi e appena ho tempo mi metto a cercarlo funzione per funzione!!
  • Re: Problema con argv

    Risolto! Beccato l'errore e ora funziona tutto alla grande!!
Devi accedere o registrarti per scrivere nel forum
7 risposte