Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Input molto lungo

    Devo fare un piccolo programma capace di risolvere espressioni in notazione polacca inversa.

    L'espressione va scritta su un'unica riga e dopo aver digitato invio bisogna calcolarne il risultato.

    Il problema è che secondo le specifiche la lunghezza dell'espressione può arrivare a 1048576 bytes...

    Ora mi chiedo: come faccio a memorizzare l'intera riga di input? L'unica cosa che mi è venuta in mente è:

    char stringa[1048576];

    scanf("%s", stringa);

    Però allocare lo spazio per un vettore da un mega e poi usare magari solo 10 bytes mi sembra uno spreco, e poi non mi sembra molto pulita la cosa.

    Suggerimenti?

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Beh ... puoi allocare dinamicamente la memoria (con la malloc e la free) "a porzioni" ... pero' diventa un programma un po' "articolato" e forse non ne vale la pena ...

    Del resto quello che hai e' una esigenza di progetto.

    Ti si dice cosa fare se la memoria non e' disponibile?

  3. #3
    non mi dice cosa faer se non ho abbastanza memoria.

    avevo creato una lista a cui aggingevo un carattere mano a mano che veniva letto dallo stdin, però poi quando stampavo i caratteri contenuti al suo interno uscivano dei caratteri strani

    Originariamente inviato da oregon
    Beh ... puoi allocare dinamicamente la memoria (con la malloc e la free) "a porzioni" ... pero' diventa un programma un po' "articolato" e forse non ne vale la pena ...

    Del resto quello che hai e' una esigenza di progetto.

    Ti si dice cosa fare se la memoria non e' disponibile?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da alex986best
    non mi dice cosa faer se non ho abbastanza memoria.
    Beh ... questo non e' "bello" perche' se si danno delle specifiche, queste devono essere complete.

    avevo creato una lista a cui aggingevo un carattere mano a mano che veniva letto dallo stdin, però poi quando stampavo i caratteri contenuti al suo interno uscivano dei caratteri strani
    Puo' andare bene e sicuramente avrai fatto qualche errore da qualche parte nel codice.

    Comunque sarebbe meglio lavorare per allocazione a blocchi e non per caratteri.

  5. #5
    vabè io provo con l'allocazione statica, poi vedremo.

    Grazie mille per l'aiuto.

    Ciao
    Originariamente inviato da oregon
    Beh ... questo non e' "bello" perche' se si danno delle specifiche, queste devono essere complete.



    Puo' andare bene e sicuramente avrai fatto qualche errore da qualche parte nel codice.

    Comunque sarebbe meglio lavorare per allocazione a blocchi e non per caratteri.

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