Come chiamare un file nella linea di comando

di il
4 risposte

Come chiamare un file nella linea di comando

Ciao a tutti
Volevo porre un quesito, nel prompt quando nella linea di comando scrivo: gcc -o nome.exe nomefile.c numeri.txt
il numeri.txt dove ci sono i dati da leggere però non me lo legge.

vi passo un esercizio banale giusto per capirci


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char argv[])
{
    FILE *fp;
    int v[10];
    int numero;
    int i = 0;

    if(argc != 2)
    {
        printf("inserisci: numeri");
        exit(EXIT_FAILURE);
    }

    if((fp = fopen(argv[1], "r")) == NULL)
    {
        printf("Errore apertura del file");
        exit(EXIT_FAILURE);
    }
    while( fscanf (fp, "%d", numero) != EOF)
    {
        v[i] = numero;
        printf("%d ", v[i++]);
    }
    return EXIT_SUCCESS;
}

4 Risposte

  • Re: Come chiamare un file nella linea di comando

    Perché non è li che lo devi mettere...
    Lo devi mettere come primo parametro del programma stesso: supponendo che il tuo esempio sia corretto
    c:/user/>nome numeri.txt
    e ti troverai la stringa "numeri.txt" in argv[1].
  • Re: Come chiamare un file nella linea di comando

    Mi da questo errore qui
    4 [main] 2 3036 cygwin_exception::open_stackdumpfile: Dumping stack trace to 2.exe.stackdump
  • Re: Come chiamare un file nella linea di comando

    Come ti avevo detto: "supponendo che il tuo esempio sia corretto", il che non è.
    Il compilatore, quando lavora, emette dei warning, cioè degli avvisi che possono essere ignorati se uno sa cosa fa, altrimenti è meglio indagare.
    Il tuo compilatore avrebbe dovuto dirti che la riga
    int main(int argc, char argv[])
    è sbagliata; argv è un puntatore a puntatore, non un array, quindi avresti dovuto scrivere
    int main(int argc, char *argv[]) // oppure
    int main(int argc, char **argv)
    Avrebbe anche dovuto dirti che
    fscanf(fp, "%d", numero)
    si aspetta che l'elenco di parametri variabile (da numero in poi) sia composto da puntatori. Quindi:
    fscanf(fp, "%d", &numero)
    Se non te l'ha detto, cambia compilatore o controlla se i warning non siano disabilitati (nel gcc si deve mettere -Wall sulla riga di comando del compilatore, non so se cygwin usa lo stesso schema).
    In aiuto potresti usare un IDE che fa dei controlli sul codice prima della compilazione, come CLion o Visual Studio.
  • Re: Come chiamare un file nella linea di comando

    Non mi ha detto niente, io uso il prompt di solito perchè cygwin mi ha dato problemi e non ho tempo per star lì a sistemarlo.
    Comunque adesso il programma gira grazie.
    Anche se mi stampa numeri a caso
Devi accedere o registrarti per scrivere nel forum
4 risposte