Libreria curses.h e funzione getch()

di il
4 risposte

Libreria curses.h e funzione getch()

Ciao
vorrei creare un semplice programma che chiede all'utente di immettere una sequenza di tasti alfanumerici, che ogni tasto immesso non sia visibile all'utente venendo sostituito da degli asterischi.
uso xcode 3.0.
so che ciò lo si può fare con la funzione getch() che è inclusa nella libreria curses.h
il codice da me scritto è questo, ma mi da errore
#include <stdio.h>
#include <curses.h>

int main(void) 
{
	int tasto[8];
	int i;
	
	for(i = 0; i < 8; i++)
	{
		tasto[i] = getch();
		putchar('*');
	}

return 0;
}
e l'errore che mi da è questo:

"_stdscr", referenced from:
_stdscr$non_lazy_ptr in main.o
"_wgetch", referenced from:
_main in main.o
symbol(s) not found
collect2: ld returned 1 exit status

scusate c'è qualcuno che riesce ad aiutarmi per favore.
ciao
andrea

4 Risposte

  • Re: Libreria curses.h e funzione getch()

    Hai linkato la libreria -lcurses ?
  • Re: Libreria curses.h e funzione getch()

    No, in giornata lo faccio, poi ti dico,
    grazie
  • Re: Libreria curses.h e funzione getch()

    La libreria lcurses.h nella mia versione di xcode non c’è, ho inserito la curses.h e la ncurses.h ma non va

    Nella curses.h la getch() è così definita :

    extern NCURSES_EXPORT(int) getch (void); /* generated */

    qualcuno mi sa spiegare cosa significa?

    Però oltre a ciò a questo punto vi pongo un quesito.

    Ho deciso diversi mesi fa di riaffacciarmi, dopo anni, al mondo della programmazione e, avendolo già studiato a scuola, mi sono riapprocciato al linguaggio C, considerandolo un'ottima base, abbastanza vicino al linguaggio macchina per poi eventualmente passare a cose più ad alto livello, tipo l'objective c o il java, ma queste sono cose che vedrò in fututo.

    Ho un mac, con sistema operativo 10.5.8 e quindi sto programmando usando xcode 3.0, anche perché, ovviamente come ambiente di sviluppo non ho dovuto scaricare niente e si integra alla perfezione con il sistema operativo.

    Però il materiale che mi sono scaricato da internet, varie dispense con spiegazioni ed esercizi, è quasi tutto basato su sistemi windows e/o unix. fino ad un certo punto va bene anche per mac.

    molte funzioni lì descritte ci sono anche per mac, funzioni di allocazioni di memoria, esercizi su array, matrici, le struct, le liste ecc. vanno bene.

    Ma ci sono anche funzioni tipo la getch(), che vuole la libreria conio.h, che per mac non esiste.

    Oltre a questa xcode non mi permette di usare neanche la funzione gets(), generando il messaggio

    warning: this program uses gets(), which is unsafe.
    nonostante sia una funzione standard del C.

    E temo che quando mi approccierò a funzioni che lavorano con i file o con la grafica incontrerò ancora problemi.

    Questo non perché xcode non vada bene, ma perché non riesco a trovare materiale in rete che mi illustri le varie funzioni del C x questo ambiente di sviluppo.

    Forse in rete troverò materiale riguardante l’objective C, il linguaggio che si utilizza per creare app per IOS, ma per il C, considerandolo il primo passo per poi crescere nella programmazione, forse è meglio che passi ad un sistema windows o unix.

    Voi cosa mi consigliate?
  • Re: Libreria curses.h e funzione getch()

    Tu hai incluso l'header curses.h, questo file è una sottospecie di descrizione di cosa contenga la libreria, ma non è la libreria! ora non conosco xcode ma avrai da qualche parte delle opzioni per il progetto cerca e devi trovare come aggiungere una libreria, cerca libcurses.so (sempre che osx usi .so come estensione...)

    Per quanto riguarda gets() non va nemmeno su linux! è altamente deprecata!
    Nel tuo caso puoi studiare i vari tutorial su freebsd, dopotutto è parte del tuo kernel...


    naturalmente se scrivi xcode add library ti sarà più semplice capire come fare...
Devi accedere o registrarti per scrivere nel forum
4 risposte