[C] passare file su linea di comando

di Anonimizzato21551 il
9 risposte
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

  • 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)
  • 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?
  • Io intendevo "dopo averlo compilato", apri la console da windows ...

    OPPURE da CodeBlocks, menu Project > Set programs' arguments..
  • 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.
  • Rileggi quello che ho scritto prima , da OPPURE ...
  • 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)
  • 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?
  • 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
Devi accedere o registrarti per scrivere nel forum
9 risposte