mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: [semplice] stampare array di unsigned char (al bit)

voglio stampare i bit di un array di unsigned char.
da sinistra verso destra come se fosse un numero, e cioč
b[0] (stampare dalla posizione 7 alla 0) poi b[1] (come prima) ecc. ecc.
non mi viene nulla meglio di ( a parte le ottimizzazioni/abbreviazioni che 
possono essere fatte per snellire e abbellire il codice):
void stampa_bits( unsigned char *b) {
        unsigned char c,c2;
 
        for ( int i=0 ; i<grandezza_b ; i++ ) {
                c=b[i];
                for (int byte=7;byte>=0;byte--) {
                        c2=1<<byte;
                        if ( c && c2 )                  
                            printf("1");
                        else    
                            printf("0");
                }
        }
}
ma ho il sospetto che non funzioni bene...
secondo voi č ok?
ciao e grazie.
-- 
__________________________________
"Ama e fai c'ho che vuoi".... 
__________________________________

 ma ho il sospetto che non funzioni bene...
Hai sbagliato l'AND, devi usare la versione bit a bit (&).
Per il resto funziona.
<code>
    #include <limits.h>
    #include <stdio.h>
    void stampa_bits( unsigned char *b, int grandezza_b)
    {
        unsigned char c,c2;
        int i, byte;
        for (i=0; i<grandezza_b; i++) {
            c=b[i];
            for (byte=CHAR_BITS; byte>=0;byte--) {
 
                c2=1<<byte;
 
                if (c & c2)
                    putchar('1');
                else
                    putchar('0');
            }
            putchar(' ');
        }
    }
</code>
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

Mox wrote:

infatti...
grazie anche per la precisazione.
ciao.


Newsgroup: it.comp.lang.c
Titolo: relativo a domanda sui pixel gia' posta

tempo indietro chiese il modo per avere accesso diretto anche ad un solo
pixel sullo schermo sui sistemi *nix e mi furono consigliate varie librerie
per una gestione relativamente diretta della periferica video..
adesso pero' ho scoperto che e' possibile gestire il video come desideravo
in origine accedendo ad /dev/fb || /dev/fb0..
volevo sapere se questa opzione non mi fosse stata consigliata per qualche
motivo relativo a compatibilita' a qualsiasi altra ragione o se posso
tranquillamente accedervi sicuro di non rendere il codice inutilizzabile su
altri sistemi..

Newsgroup: it.comp.lang.c
Titolo: Fortran compilatore

Nessuno sarebbe cosě gentile da dirmi dove poter scaricare un compilatore o
un ambiente di programmazione Fortran 77/90.
Un grazie anticipato,
   Pietro.

 un compilatore o un ambiente di programmazione Fortran 77/90.
  Ehm... in news:it.comp.lang.c? :)
  Prova il gcc e il g77, che e` il front end per il FORTRAN
dell'ambiente gcc.
 
http://www.gnu.org
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: TUTTO SU C & C++

Tantissimi tutorial & File Editati, tutto questo al sito:
www.predestinato.too.it


www.predestinato.too.it
Il tutorial chiamato corsoc.zip contiene solo l'index con la
formattazione dei frame e niente altro, forse e' il caso che lo
sistemi.
Il tutorial chiamato guidac.zip invece
- parla dell'C nella sua accezione pre-ansi
- alcune cose penso potessero essere considerati errori anche nel
preansi (come quando da per scontato la dimensione dei tipi int)
- e' pieno di imprecisioni.
Gli avevo gia' dato un occhiata prima e seppure io non sia una cima, a
meta' documento avevo gia' trovato abbastanza imprecisioni da
stufarmi... ed era solo la parte facile.
Non so chi l'abbia scritto, ma se e' tuo e' il caso che l'aggiorni, se
no e' il caso che togli il link.
Per il sito in se e accetti un consiglio: "FRAME, no grazie".
Usa i CSS, usa le tabelle.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."
Newsgroup: it.comp.lang.c
Titolo: file e socket

Ciao a tutti...
mi manca solo questa parte per completare un progetto... solo che non ho la
minima idea di come farla.
La questione si riassume facilmente: ho un file di testo molto molto piccolo
e una socket.
Lato server.
Devo spedire al client il file in oggetto. Come faccio?
Lato client.
Devo leggere e stampare a video il file che mi ha mandato il server. Come
faccio?
Spero che qualcuno mi possa aiutare!
Grazie mille,
ciao,
LadyBug!

LadyBug wrote:

Ciao .. 
Semplicemente potresti aprire il file , leggere e spedire con la socket 
ogni riga del file , potresti fare while(!feof(fd)) ,  dal lato server . 
Mentre da lato client usi funzioni read per leggere la socket , e le stampi 
con normale funzioni .
Ciao..

Grazie mille!!!
ciao,
LadyBug!
"kc" ha scritto nel messaggio ...


 LadyBug!
Matic
_________________________________________
..in a world far away we may meet again..

Temo che tutto sia molto OT qui sopra, comunque ecco i miei .02.
[scrittura dal lato server]
Volendo caricare tutto il file in memoria, io terrei 2 buffer separati, uno
statico di lunghezza nota (diciamo 1024 caratteri) ed uno dinamico allocato
con malloc. Dopodiche' leggi nel buffer statico con fgets un pezzo di file,
guardi quanti caratteri hai in effetti letto, chiami realloc() sul buffer
dinamico e lo copi. E' comunque una cosa poco elegante perche' ti costringe
a riallocare di continuo memoria piuttosto che chiamare una volta sola
malloc, pero' e' piu' efficiente (supponendo che gli accessi al disco siano
piu' costosi che quelli alla memoria) e ti permette di gestire i casi in cui
il file non ci stia completamente in memoria (quando realloc torna zero
scrivi quello che hai memorizzato e poi ricominci). Con il tuo approccio, se
malloc() fallisce uno e' fritto.
In realta', per il caso in esame, non e' neppure necessario caricare tutto
il file in memoria; basta allocare un buffer statico, riempirlo con un pezzo
di file, scrivere sul socket, e ripetere il processo fino a quando il file
termina.
[lettura dal lato client]
Mi sembra tutto un po' troppo complicato. Si potrebbe semplicemente chiamare
recv() sul socket, in maniera bloccante, senza stare ad usare select(),
looppando fino a quando recv() ritorna un errore perche' il socket e' stato
chiuso dall'altra parte, oppure ritorna con 0 byte di dati da leggere,
sintomo che il socket e' stato chiuso.
Saluti,
Lanugo of the Wandering Souls

Newsgroup: it.comp.lang.c
Titolo: Conversione da decimale a binario

 logici sui bit e io non ho proprio idea di come si faccia.
qualcosa del genere può andare (considerando un intero come 32 bit)
for( i = 0; i < 32; i++ )
{
	printf("%d", (n & ( 1 << 31) ? 1 : 0 ));
	n <<= 1;
}
printf("\n");
Ciao
Matic

 dall'utente
Assumendo che 32 bit siano sufficienti:
void stampa_binario(unsigned num)
{
	int i;
	for (i = 0; i < 32; ++i, num <<= 1)
		putchar(((num & 0x80000000) ? '1' : '0'));
	putchar('\n');
}
-- 
error: can't find .signature file 'a_punto_foco_presso_virgilio_punto_it'
Newsgroup: it.comp.lang.c
Titolo: Problema switch

Salve a tutti,
ho un problema con questo frammento di programma. Perchč, scegliendo un
opzione che richiami il default, vengono eseguiti per due volte di seguito
sia il printf iniziale che quello del default?
while (1)
{
   printf ("Scegli una delle seguenti opzioni:\n1. aaa\n2. bbb\n3. ccc\n4.
Esci\n\nOPZIONE: ");
   scelta = getchar();
   switch (scelta)
   {
      case '1':
      ...
      break;
      case '2':
      ...
      break;
      case '3':
      ...
      break;
      case '4':
      ...
      break;
      default:
      printf ("\nScelta non corretta!\n\n");
      break;
   }
   if (scelta == '4')
   break;
}
Praticamente stampa questo:
(Es: digito 9)
Scegli una delle seguenti opzioni:
1. aaa
2. bbb
3. ccc
4. Esci
OPZIONE:
Scelta non corretta!
Scegli una delle seguenti opzioni:
1. aaa
2. bbb
3. ccc
4. Esci
OPZIONE:
Scelta non corretta!
Grazie molte
Daniele

 }
[cut]
Che operazioni compi nei vari case?? 

 Che operazioni compi nei vari case??
Delle chiamate a funzioni. Se serve, posto tutto il codice completo. Cmq il
problema sorge solo se effettuo una scelta che non è compresa tra 1 e 4. Se
faccio una scelta valida è tutto ok.
Ciao
Daniele

    scelta = getchar();
Il problema e' dato da getchar() che prima legge il carattere immesso
e poi legge '\n'.
Mi sembra strano che il problema si verifiche solo nel caso di opzione
non corretta.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: caratteri proibiti

salve,
ho il dev c++
perchè, in C, la variabile:
 "n°frame"
mi dà l'errore:
stray '\176' in program
?
se elimino il simbolo " ° " allora l'errore scompare.
E' così sia in C che in C++?
E' così con ogni aompilatore c?
Quali altri simboli non vanno inseriti all'in terno del nome di una
variabile?
grazie,
adriano

 variabile?
Non so quale sia la regola generale (probabilmente dipende dalla 
localizzazione) ma io utilizzerei soltanto le 26 lettere dell'alfabeto 
inglese (sia maiuscole che minuscole), le 10 cifre decimali e il simbolo 
"_".
E.


se non vado errato, si possono usare con sicurezza i caratteri del set
ISO/IEC646(Grosso modo corripondente al set ASCII).
In ogni caso, non tutti i caratteri possono essere utilizzati per le label,
i caratteri utilizzati come operatori non devono essere usati 
(+/-&*!#?%;:^=<> etc.)
ed in ogni caso ci possono essere altre limitazioni dipendenti dal 
compilatore: ad
esempio i caratteri accentati o simboli possono non essere ricosciti come 
validi.
In generale per nomi simbolici se ti limiti al set alfanumerico (A..Z,a..z, 
0..9)
e al carattere _  non hai problemi.
brix

 simboli non vanno inseriti all'interno del nome di una variabile? 
Lo standard C distingue due set di caratteri.
Il Source character set costituisce il set che il compilatore accetta 
nei source file.
L'Execution character set è il set di caratteri interpretati in fase 
di esecuzione (usati principalmente per le stringhe).
Il set basico per il source set sono i 26+26 caratteri dell'alfabeto 
(maiuscole e minuscole), le cifre decimali 0-9, i caratteri grafici
  ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~
lo spazio ed i caratteri speciali di tabulazione e salto pagina.
All'interno del set dei caratteri grafici solo '_' non ha un 
significato sintattico e può essere usato nelle variabili.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >
Newsgroup: it.comp.lang.c
Titolo: libreria gestione stringhe

che libreria (ovviamente free, open-source) mi potreste
consigliare per avere una gestione un po' piu` "umana"
delle stringhe in c ? (intendo funzioni per cercare sottostringhe,
sostituire, tagliare, ecc...)
Grazie, ciao, Enzo.

Enzo wrote:

la libreria standard non ti piace?...A me si!
ciao

 la libreria standard non ti piace?...A me si!
A me puo` anche piacere, ma devo mettere i
miei colleghi in condizioni semplificate per evitare
che lascino memoria allocata in giro e generino
eccezioni semplicemente facendo operazioni
sulle stringhe.
Ciao, Enzo.

sostituire, tagliare, ecc...)
Hmmm, si potrebbe sempre cominciare a costruila qui dentro se chiedi
ciň di cui hai bisogno... 
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)


 .. le -eccezioni- le faranno anche con un diverso modo di vedere le cose.
L'abuso di istruzione e' parente della semplificazione. ;-)
 Ti potrebbe andar bene una libreria per trattare le stringhe in c con le
stesse istruzioni del basic ?
 ( mid , instr, right, left  .. e change per cambiare una substring con
qualche altra cosa anche di dimensione diversa.. questa non c'e' nel basic
ma facciamo finta che ci sia. )

Newsgroup: it.comp.lang.c
Titolo: Aiuto...chi mi può compilare dei sorgenti??

Ciao,
            ho un grosso problema, dovrei compilare dei sorgenti per
linguaggio C ma non ho il compilatore...č un files da circa 500k compattato
se qualcuno mi vuole aiutare glielo posso spedire...
Oppure potete aiutarmi indicandomi dove trovare il compilatore giusto (nelle
note allegate ai sorgenti viene consigliato di usare il Think's lightspeed C
perň magari funziona anche con altri piů comuni...).
Grazie a tutti in anticipo per ogni eventuale risposta

trovi cmq nelle faq.
Non ti scoraggiare perche' alla fine ci sono riuscito persino io a
compilare un sorgente in C, e non avevo proprio nessuna esperienza.
Se e' solo C credo bastino alcuni dei files citati. Leggi il
readme.1st.
Ciao,
Maurizio
Newsgroup: it.comp.lang.c
Titolo: Problema con stringhe.....

Ecco il sorgente incriminato....
il problema e' questo vorrei che scrivendo la prima stringa e giungendo ad
un deteminato punto (20 caratteri per esempio....) invece di continuare a
scrivere senza interruzuioni anche se conteggia come seconda stringa mi
facesse in automatico un invio andanto a capo da solo..spero di essermi
spiegato...
#define  EOF -1
main()
{
   int i,c,righe,lungo,rigeff,sommax;
   char lastringa[2][20];
   int somma[2];
   righe=0;
   c=0;
   while (righe<2){
      for (i=0 ; (i<19 && c!='\n') ; i++){
         lastringa[righe][i]=getchar();
         c=lastringa[righe][i];
      }
      if (c!='\n'){
         lastringa[righe][i]='\n';
      }
      for (i=0 ; lastringa[righe][i]!='\n'; i++){
          ;
      }
      if (i>0){
         ++rigeff;
      }
      ++righe;
      c=0;
   }
   somma[0]=0;
   somma[1]=0;
   sommax=0;
   righe=0;
   while (righe<2){
      for (i=0 ; (lastringa[righe][i]!='\n') ; i++){
          if (lastringa[righe][i]>='0' && lastringa[righe][i]<='9'){
             sommax+=(lastringa[righe][i]-'0');
             somma[righe]+=(lastringa[righe][i]-'0');
          }
      }
      ++righe;
   }
   printf("La Somma e'..........: %4i \n", sommax);
   printf("La Prima Riga e' ....: %4i \n", somma[0]);
   printf("La Seconda Riga e' ..: %4i \n", somma[1]);
   printf("La I - la II Viene ..: %4i \n", somma[0]-somma[1]);
}

spiegato...
Mi sono permesso di riscriverti il programma :
#include <stdio.h>
#include <ctype.h>
int getbuffchar ( int * ip )
{
     int retval ;
     if ( ( retval = *ip ) != 0 ) *ip = 0 ;
     else retval = getchar () ;
     return ( retval ) ;
}
int main()
{
   int c, d = 0  ;
   unsigned i, righe, rigeff = 0 ;
   char lastringa[2][22] ;
   int somma[2] ;
   for ( righe = 0 ; righe < 2 ; righe++ )
   {
      for ( i = 0 ; ( c = getbuffchar ( &d ) ) != '\n' &&
                    (i < 20) ;
                    i++ ) lastringa [righe] [i] = c ;
      d = c ;
      lastringa [righe] [i] = '\n' ;
      lastringa [righe] [i + 1] = '\0' ;
      rigeff += ( i > 0 ) ;
   }
   somma [0] = 0;
   somma [1] = 0;
   for ( righe = 0 ; righe < 2 ; righe++ )
       for ( i = 0 ; lastringa [righe] [i] != '\n' ; i++ )
           if ( isdigit (lastringa [righe] [i] ) )
               somma [righe] += lastringa [righe] [i] - '0'  ;
   printf ( "La somma e\' .........: %4d\n", somma [0] + somma [1] ) ;
   printf ( "La Prima Riga e\' ....: %4d\n", somma[0] ) ;
   printf ( "La Seconda Riga e\' ..: %4d\n", somma[1] ) ;
   printf ( "La I - la II Viene ...: %4d\n", somma [0] - somma [1] );
   return 0 ;
}
Newsgroup: it.comp.lang.c
Titolo: HELP ancora!

Sapreste dirmi come fare a trasformare un intero in un array di interi contenente l'intero
ex
    intero 5432
     lo voglio trasformare in
     array[1]==5
     array[2]==4
     array[3]==3
     array[4]==2
Grazie.

Lopez Fabio Holgado wrote:

 Prova con :
for (i=1;i<=n;i++){
    array[i] = (x % exp(10, i)) / exp(10, i-1);
    x -= array[i];
}
In questo modo pero' devi conoscere n che e' il numero
di cifre di x. Piu' elegantemente:
i = 0;
while (x != 0){
    i++;
    array[i] = (x % exp(10, i)) / exp(10, i-1);
    x -= array[i];
}
(alla fine del ciclo il numero di cifre e' proprio i)
NB  : Questo algoritmo mette la cifre nel vettore in modo
inverso rispetto al tuo esempio.
--
--------------------------------------------------------------------
Il mio indirizzo e' volontariamente errato per eliminare pubblicita'
non gradita. Se volete contattarmi l'indirizzo corretto e' :
 
mart...@ciop.mat.uniroma3.it

 Grazie.
 Prova cosi':
Supponiamo di sapere quante cifre compongono il numero(per es.  n ), allora
array[1] = x % 10 ;
x -= array[1];
array[2] = (x % 100) / 10;
x -= array[2];
array[3] = (x % 1000) / 100;
[...]
x -= array[n-1];
array[n] = (x % exp(10,n));
ovvero :
for (i=1;i<=n;i++){
    array[i] = (x % exp(10,i)) / exp(10, i-1);
    x -= array[i];
}
Dovrebbe funzionare, nota pero' che nel vettore
le cifre sono ordinate al contrario rispetto al tuo
esempio.
Dario


Newsgroup: it.comp.lang.c
Titolo: siti

Sono un appassionato di informatica che vorrebbe iniziare a programmare
in C.
Qualcuno potrebbe darmi la url di siti dove posso trovare delle risorse
per questo linguaggio (libri, dispense,esempi e quant'altro)?

 wrote in message 3948FC2F...@hotmail.com...

Se non hai problemi di inglese, ce ne sono a volonta, basta che fai una
ricerca con altavista o altro motore, se invece vuoi siti italiani :(
mi spiace, ma ce ne sono veramente pochi, ho provato ma non ne conosco se
non siti che parlano di programmazione in generale.
Anche per questo ho deciso di creare una mailinglist dedicata a scambio di
codici sorgenti in puro c
http://sourcecodeansic.listbot.com

Newsgroup: it.comp.lang.c
Titolo: puntatori

Salve ho un piccolo dubbio su come referenziare la sequente struttura:
typedef struct _tcp_socket
{
...
.....
word state;
byte ip_type;
...
..
}tcp_Socket;
typedef struct mystate
{
	int state;
	int offset;
	int length;
	tcp_Socket *socket;
	//char buffer[256];
} MyState;
MyState my_state;
ora dentro il mio main per arrivare a state di tcp_Socket oppure a ip_type
la sintassi sequente è giusta?
my_state.socket->ip_type;
my_state.socket->state;
vi chiedo questo perchè ho definto sempre dentro il mio main:
....
auto tcp_Socket* socket
socket=&my_state.socket;
....
se uso la sintassi :
socket->state;
ottengo un risultato corretto, se uso:
my_state.socket->state;
sbagliato.Spero di essere stato chiaro
Graie
RACAR.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Quello che hai esposto è tutto corretto.
E' impossibile che non ti funzioni, l'istruzione a se stante è corretta,
magari è nel contesto del codice che porta errori dipendenti da altre parti.

Newsgroup: it.comp.lang.c
Titolo: 2 funzioni per liste circolari

Devo scrivere 2 funzioni, una che rende una lista lineare in una
circolare, e l'altra che cerca un intero in una lista circolare...
Che errore c'è nelle mie implementazioni?
la lista l'ho definita così:
struct lista {
       int elem;
       struct lista *next;
       };
typedef struct lista lista;
Dopo essermi creato la lista, ecco le mie funzioni:
lista *rendiCircolare(lista *testa){
 lista *aux;
 aux = testa;
 while (aux!=NULL){
  aux = aux->next;
  }
  aux->next = testa;
  return (testa);
}
// .............
int cercaintero (lista *testa,int i){
    lista *aux;
    aux = testa;
    if (testa->elem==i) return 1;
    else while(aux!=testa){
     if (testa->elem==i)
     return 1;
     else aux=aux->next;
     }
    return NULL;
}
sapreste individuarmi gli errori? grazie!

 }
ciao
Giacomo
Newsgroup: it.comp.lang.c
Titolo: Divisioni con gli shift

Salve, ho un piccolo problema: dovrei fare delle divisioni usando gli shift,
ma non so come fare.
Per esempio a moltiplicare faccio
y=x*80 ------------> y=(x<<6)+(x<<4);
Grazie.

you wrote:
x << y significa "moltiplica x per 2*y"
x >> y significa "dividi x per 2*y"
x = 20 
x << 1 = 40
x >> 2 = 5
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
"There is nothing better for understanding a kangaroo than seeing it jump."
[D.Grune, C.J.H. Jacobs]

Forse non mi sono spiegato bene.
ecco un'esempio
int x=50
int y=x*40;
int z=(x<<5)+(x<<3);
ovviamente y e z sono uguali
ma se devo fare
int x=50;
int y=x/7;
int r1=x%7;
int z=?;
int r2=?
Spero di essermi spiegato bene


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int dividi( 	int a, 		// dividendo
		int b, 		// divisore
		int *r ){	// resto
 
	int 	ris=0;	
	int	div=b;
	int	m=1;
	while( a > b ){
 
		if( div > a ){
 
			div >>=1; m>>=1;
			ris+=m; 
			a-=div;	
			div=b; m=1;
 
		}
 
		 div <<=1;
		 m<<=1;
 
	}
 
 
	*r=a;	// resto;
	return ris;
 
}
int main( int argc ,char **argv ){
	int	r,ris,div,DIV;
 
	DIV=atoi( argv[1] );
	div=atoi( argv[2] );
 
	ris=dividi( DIV, div, &r );
 
	printf("%d/%d=%d=%d; %d%%%d=%d=%d\n",
		DIV,div,ris,DIV/div,
		DIV,div,r,DIV%div );
 
	return 0;
}
La logica di funzionamente e' equivalente alla moltiplicazione:
d	divisore
D	dividendo
R	risultato
r	resto
D=d*R+r;
'R' lo posso scrivere nella forma
R=1<<m1 + 1 << m2 + 1 <<m3 .... ( se R= 011010  m1=1, m2 = 4, m3 = 5 ... )
per cui
d*R=d<<m1+d<<m2+d<<m3 ....
'r' sara banalmente 'D-d*R'
Le incognite sono questi 'm1', 'm2', ....
Posso anche scrivere
R=r + d<<m1 + d <<m2 + d << m3 ...
Con la condizione
D > d<<m3  >  d<<m2 > d<<m1 > r
Cercho il *piu' alto* 'm' che mi garantisca
	  ^^^^^^^^^^
D > d<<m
Posso a qusto punto scrivere ( chiamiamo m  m3 )
D - d<<m3 = r + d<<m2 + d<<m1 
E procedo in questa maniera
Fino a determinare m2, m1
Il resto e' ovviamente
D - d<<m3-d<<m2-d<<m1=r
Il risultato e'
d<<m3+d<<m2+d<<m1

int r2=?
Non puoi usare gli shift per dividere per dei numeri che non siano
multipli di 2.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------------------------


 ma non so come fare.
Se lo fai per ottimizzare il programma, nella maggior parte dei casi ci
pensa il compilatore a fare queste ottimizzazioni.
--
________________________________
per rispondermi iliasba(at)
tin.it
bye Brain

			div >>=1; m>>=1;
I due test ( a>b e div>a  vanno sostituiti con >= --> a>=b e div >= a
sorry
Newsgroup: it.comp.lang.c
Titolo: Bufferizzazione (problema)

Ho un programma che mi crea problemi dopo che inserisco DUE contatti...
..quindi per i dati della prima persona tutto ok...per la seconda pure...
poi quando si tratta di inserire la terza, posso dgtare qualsiasi scelta ma
mi resta sempre sullo stesso menu!
Mi hanno suggerito che potrebbe essere un problema di bufferizzazione, ma
ciň esula dalle mie piccole e normali competenze di newbie ed entra in
quella di maestri programmatori :-)
Qualcuno potrebbe illuminarmi in merito?! Posso semplicemente risolvere il
problema? (piů che altro si tratta di bufferizzazione secondo voi??!)
...uff... che roba sto C ...ihihihihih
Precisazione: Quando arrivo al punto che mi si fissa sullo stesso menu e non
posso uscirne, basta che premo un paio di volte INVIO, e il programma si
"sblocca" permettondomi di effetturare altre eventuali scelte.
Buon proseguimento a tutti!
Shad

 "sblocca" permettondomi di effetturare altre eventuali scelte.
Prova a mettere un getchar() alla fine della funzione dopo la quale il
menu si blocca.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

Newsgroup: it.comp.lang.c
Titolo: Problema con execv e prog in ambiente Un*x

Salve a tutto il newsgroup, avrei un problema con un programma c.
Il programma in questione dovrebbe eseguire quanto passato sulla riga di
comando.
Ad esempio :
./run ls -l
./run wc -c
etc etc...
Il programma e' il seguente :
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
void Runna(char* arg1, char* arg2);
int main(int argc, char *argv[]) {
  /* Controllo sui parametri immessi */
  if(argc < 3) {
    printf("ERRORE : il numero dei parametri immessi non e' corretto.\n");
    exit(1);
  }
 
  Runna(argv[1], argv[2]);
 
  return 0;
}
void Runna(char* arg1, char* arg2) {
  pid_t pid;
 
  switch(pid = fork()) {
  case -1:
    printf("fork fallita.\n");
    break;
  case 0:
    execv("/bin/", arg1, arg2, (char *)0); /* Qui sta il problema ...!!!*/
    perror("istruzione  fallita");
    break;
  default:
    wait((int *)0);
    printf("%s eseguita!\n", arg1);
    break;
  }
}
Per tenere un livello di astrazione adeguato, ovvero non so che comando
passo sulla linea di comado, come devo trattare la execv ...???
Spero di essere stato chiaro e grazie a chi può darmi una mano.
Cordiali saluti.
 
	kyro

   case 0:
execv(argv[1], argv);


Newsgroup: it.comp.lang.c
Titolo: strutture dati: aiuto

salve a tutti ho da chiedervi dove posso scaricare codice sorgente e 
spiegazione dei seguenti argomenti:
Lista collegata e Doppia lista collegata
Code e Pile
Sets
Hash tables
Tree
graphs
sorting and searching
vi prego di inviarmi solo argomenti trattati in italiano.
grazie a tutti


E poi? :-)
prova a cercare nelle pagine dei corsi dei siti di programmazione italiani.
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003
Newsgroup: it.comp.lang.c
Titolo: tolower un po lento.....

Ciao,
sono alle prime armi con il C, ho la necessità di fare dei match tra
delle stringhe, per semplificare i match  ho pensato di portare tutto
in minuscolo. Ma una volta scritta la funzioncina il processo è
divenuto molto lento (rispetto alla versione senza la traduzione in
minuscolo) e quindi mi sono chiesto non è che ci sono metodi più
veloci per fare il lower case.
Vi riporto il pezzo di codice che fa il matching.....
    while (!feof(f)) {
       fgets(buffer,sizeof(buffer),f);
       int x;
       for (x=0; x<strlen(buffer); ++x)
       {
           buffer[x] = tolower(buffer[x]);
       }
       loginType = strstr(buffer,tipo);
       utente = strstr(buffer,user);
       if (loginType != NULL && utente != NULL){
        strncpy(birillo,loginType,strlen(tipo));
        strncpy(utenteA,utente,strlen(user));
        if (strcmp(utenteA,user) == 0 && strcmp(birillo,tipo) == 0){
          printf("%s",buffer);
        }
       }
    }
   fclose(f);
resto in attesa di un vostro riscontro...
Grazie.
Mirko.

        for (x=0; x<strlen(buffer); ++x)
qui sopra ad  ogni ciclo invochi una funzione (strlen) che
scandisce tutto il buffer per trovare la sua fine e calcolare
la lunghezza.
se il buffer e' lungo questo puo' essere uno spreco.
se sai che la lunghezza non cambia tanto vale calcolare la lunghezza
una volta per tutte prima del ciclo,
oppure puoi usare una variabile puntatore  tipo
char *p;
e fare
for (p=buffer; *p; p++)
e usare quindi il puntatore per scandire il buffer.
Non mi pronuncio sul resto del codice, ma mi sembra
molto difficile, in un programma dove c'e' input da disco
che sia la tolower a rallentare sensibilmente le cose...
ciao,
g.

Newsgroup: it.comp.lang.c
Titolo: Algoritmi e Strutture Dati

Salve a tutti,
dove posso trovare in rete tutorial per realizzare e gestire strutture dati
come liste, code, stack, alberi, e grafi?
Grazie
Enrico

 come liste, code, stack, alberi, e grafi?
C'č un'ottima guida che si chiama Tricky C, fatta bene soprattutto sulla
parte della gestione dell'hardware e della memoria,
credo che tu vada quasi a colpo sicuro.
La puoi trovare su 
http://ada2.unipv.it/biblio/trickyc/trkcfrm.htm
, c'č
anche per il download.
spa...@libero.it
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 c'è anche per il download.
Ha il piccolo problema che non funziona nessuno degli esempi, in quanto
è aggiornato all'epoca del turbo c sotto dos!
-- 
Andrea Bergia - studente              Linux Registered User #281550

 è aggiornato all'epoca del turbo c sotto dos!
Ha anche il piccolo problema che non e' affatto una buona guida :) 
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."
Newsgroup: it.comp.lang.c
Titolo: AIUTO PUNTATORI.

Qualcuno sa' dirmi qual' e' la differenza tra queste espressioni
d'assegnamento?
p = &i     e    *p = &i
con i come int e p puntatore a int.
Grazie.

> p = &i     e    *p = &i
la prima dice a p di puntare a i , la seconda mette nell'indirizzo puntato
da p l'indirizzo di i

> > p = &i     e    *p = &i
Nel secondo caso va fatta una conversione esplicita per evitare che il
compilatore emetta un warning:
*p=(int)&i
Inoltre, mentre la prima serve ad inizializzare un puntatore(dirgli dove
puntare), per la seconda, si deve aver già inizializzato il puntatore,
altrimenti, non sarà definito dove scrivere...
Marco Iannaccone

 p = &i     e    *p = &i
p=&i;
assegna a p l'indirizzo di i
*p=&i;
se p punta a qualcosa che gli e' stato esplicitamente assegnato con
p=&i ad esempio allora assegna ad i il valore dell'indirizzo di i:
Programmino:
#include<tutto.h>
main()
{
	int i,*p;/*i ha un certo indirizzo assegnatogli a tempo
			d'esecuzione*/
	p=&i;/*p punta ad i cioe' contiene l'indirizzo di i*/
	*p=&i;/*i cioe' colui che e' puntato da p prende il valore del
		proprio indirizzo*/
	printf("%d",i);/*stampa l'indirizzo di i che e' contenuto in i*/


con i come int e p puntatore a int.
La differenza e' che la prima e' corretta e la seconda e' sbagliata.
p e' un puntatore a intero, cioe' il suo valore e' destinato ad essere
un indirizzo e quindi assegnare a p l'indirizzo della variabile i e'
lecito. Nel secondo caso, con *p si identifica la variabile intera
puntata e non ha senso assegnarle l'indirizzo di i.
Andrea Laforgia (andrea_...@XXXbigfoot.com)
------------------------------------------------
Il mio indirizzo di posta elettronica è inattivo 
per il momento.

p=&i ad esempio allora assegna ad i il valore dell'indirizzo di i:
Attenzione pero' al fatto che I PUNTATORI NON SONO INTERI e quindi la
trasformazione da &i a intero dovrebbe generare un warning del tipo
"pointer conversion without cast" o qualcosa del genere...

Newsgroup: it.comp.lang.c
Titolo: Generare numeri casuali

Salve a tutti, qual'è il modo più semplice per generare interi compresi tra
due numeri, nel mio caso 96 e 110?
Scusate per la banalità della domanda e grazie a tutti!


nel seguito assumo che tu voglia un numero compreso
tra 96 e 110 estremi INCLUSI.
includi <stdlib.h>
chiami UNA VOLTA SOLA ALL'INIZIO DEL PROGRAMMA
la funzione
srand();  //che inizializza il generatore
se vuoi poter ripetere la sequenza di numeri generati
puoi speficicare tu un seme per inizializzare il
generatore con un numero specifico.
srand(45452);
se vuoi che ad ogni run la sequenza sia diversa puoi:
fare cosi'
#include<time.h>
srand(time(NULL));
in modo da inizializzare il generatore con in numero di
secondi trascorsi dal primo gennaio 1970.
a questo punto puoi chiamare la funzione
rand()
che restituisce un valore INTERO tra 0 e RAND_MAX.
RAND_MAX dipende dal tuo compilatore.
Tipicamente dovrebbe essere un valore di circa 2^31.
(Su compilatori molto vecchi potrebbe essere 32767 o 65535).
A questo punto puoi seguire due strade:
o usi il modulo (%) tipo:
R = 96+rand()%(110-96+1);
questo perche' il modulo (cioe' il resto della divisione)
per N assume i valori tra 0 e N-1.
Questo metodo di cui sopra dovrebbe andare bene con
i compilatori moderni con una buona libreria.
Pero' i compilatori vecchi (le librerie vecchie)
spesso avevano dei generatori di numeri casuali
nei quali bit "bassi" erano "meno casuali" dei
bit "alti". Quindi l'operatore modulo potrebbe
dare numeri non ben distribuiti.
In questo caso e' meglio usare questo approccio
R = 96 +(int) ((110.0-96.0+1.0)*rand()/(RAND_MAX+1.0));
che produce numeri meglio distribuiti.
In generale per generare numeri interi tra A e B (estremi inclusi) hai
quindi due formulette:
R = A + rand()%(B-A+1);
oppure
R = A + (int)(((double)(B-A+1))*rand()/(RAND_MAX+1.0));
ciao,
g.

"Giovanni Resta" <g.r...@iit.cnr.it.nospam> ha scritto nel messaggio
news:blbdbt$pqa$1...@newsfeed.cineca.it...
[CUT]
Ciao, grazie mille per la tempestività della risposta, sei stato
gentilissimo e molto esauriente! :)
Newsgroup: it.comp.lang.c
Titolo: rimozione bit di stop

Salve a tutti,
dall'ultima volta che ho postato qui ne è passato di tempo...
ho un problemino che ci sto uscendo pazzo...
Praticamente, da un'interfaccia radio ricevo un frame, un array di
char, codificati in questo modo:
 byte, stop_bit, byte,stop_bit, etc...
Per esempio:
se i byte fossero : 00010010, 01011010,01101001
la stringa sarebbe:
00010010 0 01011010 0 01101001
il frame è composto anch'esso da char con inframezzati i bit di stop.
In questo caso sarebbe così:
frame[0] = 00010010
frame[1] = 00101101
frame[2] = 00011010
frame[3] = 01000000
Questa cosa ha periodicità 9, infatti frame[8] è uguale a rf_frame[9].
Ora...
Io ho scritto un metodo per fare questa decodifica che non mi vuole
funzionare e non capisco perchè...
Mi dareste una mano?
void decode(char*rf_frame,char* result){
	int a,b,c;
	a = 0;
	b = 0;
	c = 0;
	for(a = 0; a<70; a++){
		if(b == 0){
			result[a] = rf_frame[a+c];
			b++;
			continue;
		}//if
		if(b>0 && b<8){
			result[a] = (rf_frame[a+c]<<b) | (rf_frame[1+a+c]>>(8-b));
			b++;
			if(b==8){//questo serve per la periodicità
				c++;
				b=0;
			}//if
		}//if
	}//for
}//metodo
Grazie Mille!

C'era un errore nell'indice...
Questo sembra funzionare, ma se lo provate e mi fate sapere è meglio.
Se è giusto quello che ho fatto tanto meglio, resterà per i posteri...
:-)
void decode(unsigned char*rf_frame,unsigned char* result){
	int a,b,c;
	a = 0;
	b = 0;
	c = 0;
	for(a = 0; a<62; a++){
		if(b == 0){
			result[a] = rf_frame[a+c];
			b++;
			continue;
		}//if
		if(b>0 && b<8){
			result[a] = (rf_frame[a+c]<<b)|(rf_frame[1+a+c]>>(8-b));
			b++;
			if(b==8){
				c++;
				b=0;
			}
		}//if
	}
}
Newsgroup: it.comp.lang.c
Titolo: percorso inverso

Salve a tutti!
Ho provato, con Icc, ad aprire (con open binary) un eseguibile compilato da
me. Accanto al codice esadecimale (o altra codifica), vedo un codice ASCII
che avrei immaginato totalmente illeggibile. In realtà scopro che prorpio
illeggibbile non è: si vedono un po' di cose riguardanti (credo) la
compilazione ed il linking (anche path riguardanti il mio disco rigido, come
F:\winxp\compilatoriC\Icc...ecc ecc., oppure pezzi del sorgente (soprattutto
testo).
Questo mi ha fatto venire un piccolo dubbio: è possibile ricostruire un
sorgente partendo dall'eseguibile?

Alfred ha scritto:

Ciao.
Basandomi sulla mia esperienza, direi che partendo da un compilato C 
(standard) è impossibile riuscire a risalire al sorgente originale.
E' però possibile capire cosa fa il tuo programma :
http://www.itportal.it/developer/speciali/reverseng/
Ciò che questo articolo applica ai compilati di VB è valido per 
qualsiasi file binario.
Se ti interessa l'argomento guarda anche questo :
http://www.programmerstools.org/
qui trovi molti strumenti che ti aiuteranno a curiosare nei compilati. 
In più una serie di utilities per la programmazione quotidiana.
-- 
Ciao.
Roberto Rossi
Web   : 
http://rsoftware.altervista.org

 sorgente partendo dall'eseguibile?
No.  La trasformazione da codice simbolico ad alto livello a codice
eseguibile è pressoché irreversibile.  Quello che puoi ottenere facilmente
è un codice sorgente che faccia le stesse cose del codice originale, ma
sarebbe assolutamente illeggibile.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sorgente partendo dall'eseguibile?
No. Non e' possibile riconstruire una vacca partendo da un hamburger.
-- 
Horst

 sarebbe assolutamente illeggibile.
Beh, per valori non-troppo-grandi di "assolutamente". Il reverse
engineering esiste. É solo difficile.
-- 
Adriano Varoli Piazza
The Inside Out: 
http://moranar.com.ar
MSN: 
adri...@hotmail.com
ICQ: 4410132

 engineering esiste. É solo difficile.
Per valori molto grandi di "difficile", il reverse engineering diventa
impossibile.


Newsgroup: it.comp.lang.c
Titolo: come si fa un makefile?

dove posso trovare info per fare un makefile da usare per un progetto C++ su
linux?
scusate l'ignoranza


Sul manuale del GNU make, 
www.gnu.org
-- 
Francesco P. Lovergine  f.loverginei AT 
iesi.ba.cnr.it

 dove posso trovare info per fare un makefile 
$ info 'GNU Make'
$ man make
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)
Newsgroup: it.comp.lang.c
Titolo: Stringhe e file !Per favore aiutatemi presto ho l' esame giovedì !

Salve ragazzi ,sono nuovo dell' ambiente e ho bisogno del vostro aiuto !
Se ho un file contenente un testo letterario come posso fare ad analizzare
parola per parola (ad isolarla ,  per esempio?)
Se utilizzo fread devo necessariamente ricorrere ad un buffer limitato e
questo comporta che se una parola cade alla fine dello spazio riservato al
buffer essa viene troncata.
Come posso riuscire a distinguere una parola dall' altra?
Un altro problema direttamente collegato al precedente è quello di rilevare
tutte le parole formate da 2 lettere e quelle formate da 3 lettere .Come
posso fare?
Vi ringrazio in anticipo per l' aiuto.
P.S.
Devo programmare in ANSI C

 ha scritto nel messaggio
news:pxvW6.2682$Cq5.1...@news.infostrada.it...

Il tuo problema, in effetti, credo che consista nell'isolare le parole anche
quando sono separate da virgola, punto, apostrofo, eccetera. In caso
contrario potresti tranquillamente usare fscanf (al posto di fread), che
restituisce la prima stringa "terminata" (da spazio, tabulazione, invio).
Per evitare ogni questione, ti consiglio di leggere il file carattere per
carattere, faccio un esempio:
...
char parola[MAXLUN], ch;
 int lun=0, i;
for (i=0 ; i<MAXLUN ; i++) *(parola+i)='\0';            // strset non è
ANSI...
...apro il file e metto il puntatore in "fp"...
while ((ch = fgetc(fp))!=EOF)
{
      if (isalpha(ch))
          parola[lun++]=ch;
       else if (lun!=0)    // Se lun è 0 ho un carattere di separazione
isolato o una sequenza
      {
           // Ho trovato qualche cosa di diverso da un char...
           printf("%s\t%d\n", parola, lun);
            // Ho sia la parola che la lunghezza...
           for (i=0 ; i<MAXLUN ; i++) *(parola+i)='\0';
           lun=0;
      }
 }
eccetera.
...
Non l'ho provato, ma credo che funzioni.
Ciao
Riz
Newsgroup: it.comp.lang.c
Titolo: programmare in C

salve a tutti volevo qualche informazione sul C:
non sono molto esperto ,so usare i puntatori gli array , creare funzioni
lavorare con i FILE,
mi sono creato una rubrica e altre cose (ma non penso si possano fare solo
queste cose)..
Vorrei imparare ad usare realmente la programmazione in C per crearmi
piccole applicazioni che interagiscono con le porte o altre cose....da dove
incomincio???(non saprei)..
Spero si chiaro quello che ho scritto
grazie
a presto.

 incomincio???(non saprei)..
da it.comp.programmare.win32 oppure it.comp.os.linux.developement,
it.comp.macintosh etc etc etc...
questo gruppo tratta di ANSI C
poi cosa sia 'programmare realmente' in C, non lo capisco... in ANSI C
puoi per esempio scrivere un compilatore, algoritmi di vario genere per
manipolare dati piu` svariati e una serie di programmi tutt'altro che
banali... 
Ovviamente se vuoi interfacciarti a features specifiche dell'OS devi
andare altrove.
-- 
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
    - Brian W. Kernighan
Newsgroup: it.comp.lang.c
Titolo: Inizializzare array di stringhe multidimensionali

 
 
 
 
Devo scrivere un array di stringhe a 2 dimensioni, con il compilatore Mingw.
 
Ho provato con:
 
char array1 [20][30]= { {" "},
{"abcdef"},{"abcdf"}, ... -> 30
 
{" "},
{"abcdef"},{"abcdf"}, ... -> 30
 
{" "},
{"abcdef"},{"abcdf"}, ... -> 30
 
 
};
 
La linea 0,0 e tutte quelle presenti alla riga zero, le voglio lasciare
nulle o vuote.
Il file.c viene compilato, ma quando provo a stampare, printf("%s\n",array1
[1][1]);
a video compare: (null)
 
In ogni modo, mi sapete spiegare come inizializzare degli array 
multidimensionali?
 
Come vanno scritte le stringhe? con le parentesi graffa interne a quella 
principale?
 
 
Ciao
 
 
 
 


Prima di tutto devi tenere presente che una stringa è un'array di caratteri..
char a; /* 1 carattere */
char a[10]; /* array di 10 caratteri o stringa */
char a[10][10]; /* array di 10 stringhe di 10 caratteri */
etc.etc.
Ciao!

 
 
Dovrei fare una cosa del genere.
Un calendario perpetuo, composto dai 12 mesi=righe
con i 31 giorni per colonna "1gennaio", "2gennaio", "3gennaio", 
..."31gennaio"
cosi via con febbraio ed i restanti mesi!.
 
Cosa mi serve? un array tridimensionale?
 
 
Ciao
 
 

 Cosa mi serve? un array tridimensionale?
 
Guarda se questo esempio ti va bene. Ciao.
 
================================================
#include <stdio.h>
 
const char *calendario[6][3] = {
     { "1gennaio", "2gennaio", "3gennaio" },
     { "1febbraio", "2febbraio", "3febbraio" },
     { "1marzo", "2marzo", "3marzo" },
     { "1aprile", "2aprile", "3aprile" },
     { "1maggio", "2maggio", "3maggio" },
     { "1giugno", "2giugno", "3giugno" }
};
 
 
int main()
{
     int mese, giorno;
 
     for (mese = 0; mese < 6; mese++)
         for (giorno = 0; giorno < 3; giorno++)
             printf("%s\n", calendario[mese][giorno]);
 
     return 0;
}
================================================

 
Adesso funziona, anche ieri diciamo che avevo capito come creare un vettore
a 2 dim, ma quello che omettevo di scrivere, -involontariamente-, era la ",
", tra la fine di una
riga con la }dx, e l'altra riga, che iniziava con { sx.
 
Grāzie e ciao

Newsgroup: it.comp.lang.c
Titolo: ! Open Source, come collaborare ?!?

Mi sarebbe venuta voglia di prendere parte allo sviluppo di un semplice
progetto opensource. (in C/C++, o Perl). Sapete come fare ???
Alex

progetto opensource. (in C/C++, o Perl). Sapete come fare ???
www.sourceforge.net

On Sat, 03 Mar 2001 20:53:40 GMT,
Alex <Nom...@wow.boh> wrote:

http://sourceforge.net
Scegli quello che piu` ti piace. :-)
Ciao,
 Emmanuele
-- 
Emmanuele Bassi         |  Linux: [ 
http://digilander.iol.it/ebassi/linux/
 ]
                        |   SLRN: [ 
http://digilander.iol.it/ebassi/slrn/
  ]
emmanue...@iol.it
  |   SETI: [ 
http://digilander.iol.it/ebassi/seti/
  ]
  GnuPG Key Fingerprint: 9747 635E B95A B0B3 4370 1CAA CAF7 512B 945C A44C
Newsgroup: it.comp.lang.c
Titolo: "disegno" in modalita' testo

Vi ricordate i bei tempi dei programmini solo testo
con le finestre disegnate utilizzando i simbolini ASCII ??
Ecco, molto bene sto cercando di rifare un programmino che
"disegni" in modalita' testo.
Problemi:
 - una volta usavo una bellissima funzione chiamata gotoXY
 (sicuramente della Borland) anche se non ricordo se era
 in C o in Pascal. Dove trovo una funzione simile ?
 - dimenticavo di dirvi che ora programmo sotto Linux, e quindi
 non ho compilatori diversi da gcc e le librerie sono quelle
 POSIX.
Sapreste consigliarmi su una funzione simile, o anche su altre
funzioni che pero' disegnino in modalita' testo, per ora ho
trovato solo la SVGA lib.
Grazie, ciao
-- 
Zack
Stefano Zacchiroli
zacc...@cs.unibo.it
za...@comune.budrio.bo.it
ICQ# 33538863
"Never understimate the dark side"

 finestre disegnate utilizzando i simbolini ASCII ??
	$ man curses
	Alla prossima,
		Marco

 
man curses
No manual entry for curses


 No manual entry for curses
	$ man ncurses
	Alla prossima,
		Marco

                 Marco
OK ora funge, grazie


 wrote:
[ snip ]
SZ>man curses
SZ>No manual entry for curses
$ man ncurses
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 OK ora funge, grazie
  Problemi di /porting/... :)))
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: flush quando si usa?

Salve a tutti,
    potreste dirmi quando e' necessario usare la flush? In tutti i miei 
programmini dove davo anche molti dati in output (printf) non ho mai avuto 
problemi senza la flush...  ne ho forse frainteso l'uso?
per intenderci
for (i=0;i<100000;i++)
    printf("Ciao %d",i);
funziona senza il bisogno di flush...
Avrei anche una domandina veloce sui puntatori:
se uso un puntatore a char
char *ptrStringa=NULL;
ptrStringa=&miastringa[4];
e voglio deallocarlo all'uscita della funzione, perche' non va bene un 
free(ptrStringa)? Viene forse deallocato in automatico come se fosse un int 
o altro tipo di variabile?
Grazie
Dade
P.S. e [OT] conoscete qualche tutorial per vc++ per creare interfaccie 
grafiche con le MFC... qualcosa mi molto semplice e magari in ita :-P 

 free(ptrStringa)? 
In questo caso non serve deallocare.  Ciň che, al limite, dovresti
deallocare č miastringa, ma solo se hai esplicitamente allocato memoria
per essa.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 free(ptrStringa)? 
e dove sarebbe la allocazione ???
stai solo facendo in modo che ptrStringa stia puntando al quarto
carattere di una non ben definita miaStringa.
la free serve per liberare memoria allocata dinamicamente e ci sono
solo 3 modi per allocare memoria dinamicamente (q.v.):
malloc
calloc
realloc
la variabile *prtStringa;
e' una variabile dichiarata staticamente alla stessa stregua di un
int Pippone;
e come Pippone non puo' essere deallocata esplicitamente, visto che
se ne occupa gia' il compilatore.
ciao,
g.

 per essa.
Capito :-)
Grazie 1000
Ciao
Dade
P.S.: Posso chiederti che ide usi? Solamente per avere un'idea di che ide si 
usa a livello professionale... ultimamente sono molo interdetto tra vc e 
dev-cpp (quest'ultimo non mi piace affatto come indenta...)


 P.S.: Posso chiederti che ide usi? 
Ho usato gli IDE più disparati per sviluppare in C.
Ora come ora sto usando Dev, ma solo per disperazione.


 Scusami ma non riesco a capire :-(
Allora probabilmente dipende dal compilatore/s.o.
Sotto linux, col gcc, a me il tuo programmino
non stampa nulla, a meno che io dopo la
printf non inserisca un fflush(stdout).
Forse il tuo compilatore flusha lo stdout
dopo ogni printf. Oppure lo fa ogni
tot millisecondi. Boh!
ciao,
g.

 ha scritto nel messaggio 
news:d9r8du$ee1$5...@newsfeed.cineca.it...

Azz, hai ragione... compilato sotto linux non stampa nulla e per di piu' ci 
impiega anche una vita prima di uscire....
sotto win con vc++ stampa ed esce quasi subito... forse il compilatore ha 
ottimizzato in maniera diversa...
grazie 1000
Dade