Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    92

    [c] redirigere l'output

    Salve qlk di voi mi saprebbe dire come si fa a dare in input un file sorgente?

    x esempio: io ho un programma ke mi conta gli spazi vuoti, le lettere, ecc... mi dice di dargli come input il suo stesso file sorgente, mediante il comando: cnt_char<cnt_char.c .
    Ecco il prog.

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

    int main(void)
    {
    int blank_cnt = 0, c, digit_cnt = 0, letter_cnt = 0,
    nl_cnt = 0, other_cnt = 0;

    while ((c == getchar()) != EOF)
    if (c == ' ')
    ++blank_cnt;
    else if (c >= '0' && c <= '9')
    ++digit_cnt;
    else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
    ++letter_cnt;
    else if (c == '\n')
    ++nl_cnt;
    else
    ++other_cnt;
    printf("%10s%10s%10s%10s%10s%10s\n\n",
    "blanks", "digits", "letters", "lines", "others", "total");
    printf("%10d%10d%10d%10d%10d%10d\n\n",
    blank_cnt, digit_cnt, letter_cnt, nl_cnt, other_cnt,
    blank_cnt + digit_cnt + letter_cnt + nl_cnt + other_cnt);
    system("pause");
    return 0;
    }

    ok?
    Ora come faccio a dargli come input il suo stesso file sorgente(salvato come .c)?
    Spiegatemi pls... sto impazzendo...
    Tnx all..



  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Dal titolo mi aspettavo tutto l'opposto.
    Anche se non conosco il C, posso dirti
    che devi utilizzare le funzioni apposite per leggere
    un file, estraendone una riga, un carattere, quello che
    più ti serve. Poi riscrivi quello che hai messo nel
    main in una funzione, magari adattandola al tipo di operazione
    fatta in lettura sul file, esempio:
    void leggi (char c);
    void leggi (char* c);
    ecc.
    Mi sono stato spiegato?
    Slack? Smack!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    52
    nn ho capito se vuoi farlo in c oppure ti basta farlo sulla shell...
    se sei in linux puoi usare la normale reindirezione con > (anche in dos si puo fare ma nn so come forse sempre con '<' '>')oppure se lo vuoi fare in c devi aprire il file come faresti normalmente...
    pf=fopen("nomefile.c","rt");
    o ancora puoi fare, almeno credo stdin="nomefile.c" -->chissa se funziona?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    92
    Guarda nn vi so rispondere, questo listato è sul mio libro, e mi dice solo di dargli in input il suo stesso codice sorgente, tramite appunto il comando cnt_char<cnt_char.c, può darsi che è come hai detto tu, da dos, ma come si fa?

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Devi fare esattamente come ti ha indicato il tuo libro:

    cnt_char<cnt_char.c


    funziona sotto dos, in questo modo si setta come standard input per il programma cnt_char.exe non quello che l'utente scrive sulla console, ma il contenuto del file passato (cnt_char.c); per la precisione io ottengo il seguente output:

    codice:
        blanks    digits   letters     lines    others     total
    
            96        32       327        26       176       657

    Per farlo funzionare il file .c deve essere nella stessa cartella dell'eseguibile, e devi correggere un errore che hai fatto nel listato, sostituendo la riga

    while ((c == getchar()) != 'a')

    con

    while ((c = getchar()) != EOF)

    (nota che c'è un solo '=' e non due come hai sritto tu!)


  6. #6
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    92
    Grazie milleeeeeeeeee!!! :mavieni: :mavieni:
    Come mai xò funziona sotto dos?
    se voglio farlo funzionare diversamente, cioè nn sotto dos?
    Tnxxxxxxxxx anx721




  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Perche non dovrebbe funzionare sotto dos? penso che anche sotto linuz dovrebbe funzionare.


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 © 2025 vBulletin Solutions, Inc. All rights reserved.