[C] passare file su linea di comando

di il
9 risposte

[C] passare file su linea di comando

Ciao a tutti, ho scritto questo programma per trovare la parola con il maggior numero di vocali da un file di testo (parole separate da spazi e punteggiatura) passato come argomento su linea di comando.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LUNG_MAX 30

int main(int argc, char* argv[])
{
    FILE *fp;
    int i, vocali_corrente=0, vocali_max=0;
    char parola[LUNG_MAX], parola_corrente[LUNG_MAX];

    if(argc!=2)
    {
        printf("errore numro parametri\n");
        return 1;
    }

    if((fp=fopen(argv[1],"r"))==NULL)
    {
        printf("errore apertura file");
        return 1;
    }
vocali_max=-1;
    while(fscanf(fp,"%s", parola_corrente)!=EOF)
    {
        for(i=0; parola_corrente[i]!="\0"; i++)
            if(parola_corrente[i]=='a'||
                    parola_corrente[i]=='A'||
                    parola_corrente[i]=='e'||
                    parola_corrente[i]=='E'||
                    parola_corrente[i]=='i'||
                    parola_corrente[i]=='I'||
                    parola_corrente[i]=='o'||
                    parola_corrente[i]=='O'||
                    parola_corrente[i]=='u'||
                    parola_corrente[i]=='U')
                vocali_corrente++;
    }

if(vocali_max<vocali_corrente)
{
    vocali_max=vocali_corrente;
    strcpy(parola, parola_corrente);
    vocali_corrente=0;
}

fclose(fp);
printf("la parola con piu vocali è: %s",parola);


return 0;
}
ora vorrei eseguirlo ma non so come passargli il path del file: ho creato un file.txt con blocco note.... e poi?

9 Risposte

  • Re: [C] passare file su linea di comando

    Poi apri una finestra console, scrivi il nome dell'eseguibile seguito dal nome del file di testo (ovviamente completi di percorso se non sono sulla cartella attuale)
  • Re: [C] passare file su linea di comando

    oregon ha scritto:


    Poi apri una finestra console, scrivi il nome dell'eseguibile seguito dal nome del file di testo (ovviamente completi di percorso se non sono sulla cartella attuale)
    il problema è che se faccio compilare, codeblocks apre la finestra console con scritto "errore numero parametri" e non posso fare piu niente.

    correggimi se sbaglio: devo mettere il path del file txt al posto di argv[1] nella fopen?
  • Re: [C] passare file su linea di comando

    Io intendevo "dopo averlo compilato", apri la console da windows ...

    OPPURE da CodeBlocks, menu Project > Set programs' arguments..
  • Re: [C] passare file su linea di comando

    oregon ha scritto:


    Io intendevo "dopo averlo compilato"

    no, credo di aver spiegato male il mio problema: io non capisco come il codice che ho postato sopra possa "associare" ad argv[1] il nome del file.txt che voglio che lui legga.
    Ho trovato su internet che qualcuno scrive al posto della
    if((fp=fopen(argv[1],"r"))==NULL)
    if((fp=fopen("C:\Users\Utente\Desktop\......","r"))==NULL)
    ma sostituendo a argv il path del mio file txt code blocks mi da errore.
  • Re: [C] passare file su linea di comando

    Rileggi quello che ho scritto prima , da OPPURE ...
  • Re: [C] passare file su linea di comando

    oregon ha scritto:


    Rileggi quello che ho scritto prima , da OPPURE ...
    eh ho provato entrambi i metodi oregon ma non ho risolto.. la cosa strana è che da Project>set program's arg... clickando non succede nulla, non si aprono finestre di dialogo o altro.
    (comunque grazie per la pazienza)
  • Re: [C] passare file su linea di comando

    Non l'avevi detto ... ma è impossibile che non si apri la finestra da quel menu ...

    Tu stai utilizzando un PROGETTO per il tuo codice, vero? O no?
  • Re: [C] passare file su linea di comando

    oregon ha scritto:


    Non l'avevi detto ... ma è impossibile che non si apri la finestra da quel menu ...

    Tu stai utilizzando un PROGETTO per il tuo codice, vero? O no?
    si, usavo progetto come al solito.
    Non so perchè non lo aprisse, oggi ho provato nuovamente e appare una finestra di dialogo Select Target con questi 3 campi:
    -(selezionare: debug o release)
    -Proggram arguments: <---------- qui ho inserito il path del mio file .txt (C:\Users\Utente\Desktop\informatica...)
    -Host application:

    Non so però come completare gli altri due...potresti spiegarmeli ?
    grazie
  • Re: [C] passare file su linea di comando

    Sei sicuro?

    Controlla sulla guida di Code::Blocks
Devi accedere o registrarti per scrivere nel forum
9 risposte