mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: BNF

Qualcuno mi saprebbe dire dove posso scaricare del materiale che mi aiuti a
scrivere programmi con la Backus-Noir Form? Grazie.

 writes:
    vp> Qualcuno mi saprebbe dire dove posso scaricare del materiale
    vp> che mi aiuti a scrivere programmi con la Backus-Noir Form? 
    vp> Grazie.
ftp://ftp.gnu.org/gnu/bison/bison-1.35.tar.gz
per cominciare.
ciao,
andrea
--
Andrea Glorioso                   
andrea....@binary-only.com
Binary Only                           
http://www.binary-only.com/
Via A. Zanolini, 7/b                  Tel:        
+39-051-345
.840
40126 Bologna                         Fax:     
+39-051-930
.31.133

 ha scritto nel messaggio
news:87sn2r7...@topo.binary-only.priv...


 Va benissimo, ma volevo qualcosa di teorico. Grazie comunque. Ciao.
http://cui.unige.ch/db-research/Enseignement/analyseinfo/BNFweb.html
Libri:
http://www.cs.vu.nl/~dick/PTAPG.html
 (c'e' un link al PDF)
COMPILER CONSTRUCTION
Principles and Practice
by Kenneth C. Louden (capitolo 3)
Compilers: Principles, Techniques, and Tools
by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman

 scrivere programmi con la Backus-Noir Form? Grazie.
Qualche articolo corto?
http://www.garshol.priv.no/download/text/bnf.html
http://www.foretec.com/python/workshops/1998-11/proceedings/papers/aycock-little/aycock-little.html
Ciao
Cesare
Newsgroup: it.comp.lang.c
Titolo: sincronizzare processi

Salve,
ho fatto un piccolo programma per sincronizzare due processi che
scrivono su un file log.txt.Lo scopo è che il processo padre scriva un
numero ogni volta incrementato di uno,mentre il processo figlio scrive
una semplice stringa.Tutto questo l'ho fatto utilizzando i semafori.Il
problema è che non mi dà l'output desiderato.Di seguito il codice:
#include <stdio.h>
#include <sys/sem.h>
#include <sys/types.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/ipc.h>
union semun {
               int val;
               struct semid_ds *buf;
               ushort *array;
          };
main()
{
	struct sembuf incrFull={0,1,0},decrFull={0,-1,0},incrEmpty=
{1,1,0},decrEmpty={1,-1,0};
	union semun init;
	int semid,pid,x=0;int i;
	FILE *file;
	file=fopen("log.txt","w");
	if( (semid=semget(IPC_PRIVATE,2,IPC_CREAT|IPC_EXCL|0666)) == -1)
	{
		perror("semget");
		exit(1);
	}
	printf("semid=%d\n",semid);
	init.val=0;
	if( semctl(semid,0,SETVAL,init) == -1)
	{
		perror("1 semctl");
		exit(1);
	}
	init.val=1;
	if( semctl(semid,1,SETVAL,init) == -1)
	{
		perror("2 semctl");
		exit(1);
	}
	pid=fork();
	for(i=0;i < 10;i++)
	{
		if( pid > 0)
		{
			if( semop(semid,&decrEmpty,1) == -1)
			{
				perror("semop");
				exit(1);
			}
			printf("produco\n");
			fprintf(file,"%d ",i);
			sleep(1);
			if( semop(semid,&incrFull,1) == -1)
			{
				perror("semop");
				exit(1);
			}
		}
		else
		{
			if( semop(semid,&decrFull,1) == -1)
			{
				perror("semop");
				exit(1);
			}
			printf("consumo\n");
			fprintf(file,"processo figlio\n");
			sleep(1);
			if( semop(semid,&incrEmpty,1) == -1)
			{
				perror("semop");
				exit(1);
			}
		}
	}
}
output:
0 1 2 3 4 5 6 7 8 9 processo figlio
processo figlio
processo figlio
processo figlio
processo figlio
processo figlio
processo figlio
processo figlio
processo figlio
processo figlio
Quale errore commetto?Grazie per l'aiuto.
P.S. il programma deve usare i semafori.


ok risolto.basta aggiungere fflush(file) ogni volta che il padre o il
figlio scrivono sul file.
Newsgroup: it.comp.lang.c
Titolo: File troppo grosso per il notepad :-/

salve,
ho realizzato un semplicissimo programma che mi calcola combinazioni
di numeri e stamperebbe l'output creando un file txt.
Il problema sono i suoi 500 mega che rendono il programma inapribile
da notepad.
Come faccio?
grazie
Francesco

 wrote in news:ee25cc2b-3098-
4b93-bfc0-7...@d1g2000hsg.googlegroups.com
:

non usare notepad.
Ciao Jack
-- 
Eroi non si nasce, ti incastrano
- Jim Belushi

 non usare notepad.
e cosa uso?

 e cosa uso?
notepad++, context, pfe e ci sono altri milla mila editor
Prova ad usare il tuo motore di ricerca preferito per cercare il tuo 
nuovo editor.
-- 
Articolo 33 della Costituzione italiana: L'arte e la scienza sono 
libere e libero ne è l'insegnamento.
Se siete tosti: 
http://www.rexresearch.com/kervran/kervran.htm

 notepad++, context, pfe e ci sono altri milla mila editor
Scaricato context ho provato a farlo aprire da li e mi si è piantato
tutto e ho dovuto riavviare la macchina anche dopo aver chiuso il
programma.
Un mio amico ha detto che per aprire 500 mega di file ci vuole un
"computer alfa" non so neanche cos'è
grazie lo stesso
Francesco

   
ROTFL!
Certo che 500M di file di testo....
Forse la soluzione migliore sarebbe quella di limitare il size del file 
di testo o
suddividere il log su piu' files di size ridotta, che so, 5/10Mbyes 
ognuno  ;-)

 Francesco
Giusto!
per avere un "computer alfa" devi andare su "base aplha", 
qui : 
http://www.space1999.net/spazio/
-- 
Come rugiada al cespite dell'erba inaridita
Fresca negli arsi calami fa rifluir la vita
                                             - A. Manzoni -

 qui :
http://www.space1999.net/spazio/
Ma porcxxxx....lo strozzerei!
vabè grazie dell'info :-)
Francesco

 Un mio amico ha detto che per aprire 500 mega di file
Per aprire un file di testo di 500 mega hai bisogno di un programma che 
non si carichi tutto in memoria, oppure di tanta memoria. Io lavoro nel 
secondo caso, però sono sicuro che esistono programmi freeware per il 
primo caso.
Se ti bastasse leggerlo magari con una banale console aperta e a colpi 
di more, grep, e reindirizzamento te la cavi.
Certo che viene da chiedersi perché ti vuoi leggere 500 MB di file. Un 
enciclopedia prolissa probabilmente conterrà al massimo 50 MB di testo.
Non è che ti serve un editor binario?
In quel caso, sai cosa stai facendo?


 "computer alfa" non so neanche cos'è
Il tuo amico è un grande. Detto questo, fai su console "more nomefile" e 
vedi che accidenti c'è dentro, perché 500 MB sono troppi per essere una 
cosa normale.
-- 
Lorenzo Breda


dietro tutta! come ho scritto su iclc++ (nel quale ho scritto anche il
listato) purtoppo avrei dovuto conoscere il tipo per...
...evitare di prendere il lavoretto. Un eccentrico artigiano dalle
specifiche tutte sue...'tacci sua....
come non detto scusate per il disturbo
bye
Francesco


emacs non si fa problemi.
E.
Newsgroup: it.comp.lang.c
Titolo: scusate, solo una prova

scusate, solo una prova

 scusate, solo una prova
fa nulla, pero' c'e' it.test apposta...
Ciao Jack
Newsgroup: it.comp.lang.c
Titolo: bit to bit

salve a tutti,
mi trovo di fronte a un problema,
ho una variabile di tipo
 
unsigned long int var;
e devo conoscere lo stato di tutti i 32 bit, uno per volta,
per gestirne lo stato logico, come devo fare?
io pensavo di fare in questo modo:
unsigned long int temp=0;
temp=var>>1;  //in questo passaggio conosco il bit destro di var
ma non riesco a salvare il bit estremo destro di var...come mai?
lo so, come mai, prima scorre il bit, lo perde, e poi mi salva
il valore di var dentro temp...ma io non voglio questo, mi serve
il bit di destra di var
qualcuno puņ aiutarmi?
grazie bye duido
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 il bit di destra di var
il bit di destra: bdd = var & 1; // preferisco var & 0x01;
int b;
int st[32];
for (b=0; b < 32; b++)
{
    st[b]=var&(1<<b); // da destra a sinistra
}
puoi anche fare cosi:
#define BIT1 0x00000001L
#define BIT2 0x00000002L
#define BIT3 0x00000004L
#define BIT4 0x00000008L
#define BIT5 0x00000010L
#define BIT6 0x00000020L
[...]
#define BIT32 0x80000000L
per sapere ora il valore del sesto bit fai:
temp=(var & BIT6)!=0; e genera un valore 0 o 1.
Potresti anche usare un union con bitset ;-)


Se ho inteso bene il tuo problema e quindi per conoscere il singolo 
stato di ogni singolo bit nella variabile  "var"
allora potresti  fare in questo modo:
unsigned long var,shift=1;
unsigned long test=0;
short int pos=0
   test=var&(shift<<pos);
dove test memorizza un valore che risulta
         *   zero se il bit nella posizione "pos" (che va da 0 a 31) 
nella variabile var e nello stato logico falso(zero)
         *   > zero se il bit nella posizione "pos" e nello stato logico 
vero(uno)
Lo stato iniziale di pos e zero per controllare lo stato del primo bit 
(cioe' bit 0 <meno significativo>) successivamente la incrementi di uno 
in modo da controllare il secondo bit e cosi via.
pos        bit (var)
0   -->    1  meno significativo
1   -->    2
2   -->    3
.     .        .
.     .        .
.     .        .
31 -->  32   piu' significativo
Cio' che dovrai fare quindi e controllare con un if  la variabile "test"
 Inoltre per conoscere lo stato di tutti i bit puoi creare un array di 
unsigned long int cioe' unsigned long int test[32];
e inserire in ogni posizione che va da 0 a 31 il valore logico del bit 
per poi controllarlo con degli if
Spero ti sia stato di aiuto
bye bye
Luciano

 Luciano
ottimo
grazie luciano


> Potresti anche usare un union con bitset ;-)
eccellente soluzione
grazie Jurgen 


 > Potresti anche usare un union con bitset ;-)
Per bitset intendi campo di bit?
Ciao
--
Paolo Giarrusso
Per rispondere togliere solo "TOGLIMI" dall'indirizzo, non _spam.
Newsgroup: it.comp.lang.c
Titolo: Esercizi per imparare il C....

mi date qualche consiglio su esercizi da provare a fare per esercitarmi per
il prossimo esame di programmazione..
Grazie
Danilo

 il prossimo esame di programmazione..
Che argomenti avete trattato?
Ciao Max
-- 
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

Ho finito di fare una semplice calcolatrice:
#include<stdio.h>
main(){
/*Calcolatrice*/
float primo,secondo,risultato;
char op;
int errore=0;//variabile di controllo per la divisione
printf("***************Calcolatrice**************\n");
//Digitare numero operazione numero2 seguiti da uno spazio
printf("Digitare l'operazione\n");
scanf("%f %c %f",&primo,&op,&secondo);
if (op=='-'){risultato=primo-secondo;}
if (op=='+'){risultato=primo+secondo;}
if (op=='*'){risultato=primo*secondo;}
if (op=='/'){
            if (secondo==0){errore=1;}
            else{risultato=primo/secondo;}
            }
//Stampa del risultato;
if (errore==0) printf("Il risultato dell'operazione e': %.1f",risultato);
else printf("Si e' verificato un errore!");
return 0;
}

per ora:
Tipi, costanti variabili
Espressioni
Istruzioni: assegnazione, I/O, blocchi, condizionali, iterazioni
Tipi strutturati: array, record
Puntatori ed indirizzi: array ad allocazione dinamica
Newsgroup: it.comp.lang.c
Titolo: Operatori bitwise

E' possibile effettuare operazioni sui byte di un unsigned int senza 
ricorrere a variabili temporanee ?
Nel senso se ho 0x10203040 posso effettuare calcoli su 0x10000000,
0x00200000, 0x00003000 e 0x00000040 senza dichiarare altre variabili ?
Grazie.

 0x00200000, 0x00003000 e 0x00000040 senza dichiarare altre variabili ?
Ti sei risposto da solo, scrivendo il subject del tuo messaggio.
Di solito, usando & (and) e | (or) puoi fare tutto ciò che ti serve.
Dipende, poi, da cosa vuoi fare esattamente.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
In pratica
0x10000000 << 2
0x00200000 << 2
0x00003000 << 2
0x00000040 = 4
Ciao.

 0x00000040 = 4
E questo che cosa dovrebbe significare ? ... ma vi costa tanto "scrivere"
nei vostri messaggi ?


 
Uno shl di 2 sui primi 3 byte e settare l'ultimo a 4.

 Uno shl di 2 sui primi 3 byte e settare l'ultimo a 4.
Se a è la tua variabile unsigned long:
    a=(a&0xFFFFFF00)<<2+4;


 ha scritto:

Non che cosi` sia molto piu` chiaro ;) Quello che hai scritto sopra non
ha senso, anche se si intuisce quello che volevi fare. Se si vuole che
qualcuno spenda il proprio tempo per dare una risposta e` bene esporre
chiaramente il proprio problema (senza frasi criptiche).
Come detto altre volte: aiutateci ad aiutarvi.
Tornando al post originale, se vuoi estrarre i singoli byte basta fare
degli AND bitwise con delle maschere opportune.
Ad esempio per estrarre il terzo byte (da dx):
unsigned int num = ...;
unsigned int b3 = num & 0x00ff0000;
e poi per comodita` fai una shift a destra:
b3 = b3 >> 16;
Per cambiare il terzo byte puoi basta fare uno shift a sx del valore che
vuoi inserire e quindi metterlo in OR con la variabile da cambiare.
b3 = (b3 & 0xff) << 16; /* l'and serve per evitare di sporcare bit al di
                           fuori del byte di interesse */
num = num | b3;
E` poi semplice scrivere delle funzioni ad hoc per estrarre o settare un
dato byte:
unsigned char get_byte(unsigned int val, int byte_num) {
        /* Supponendo i byte numerati da 0 a 3*/
        unsigned int mask = 0xff << (byte_num * 8);
 
        return (val & mask) >> (byte_num * 8);
}
Luca
-- 
Home: 
http://kronoz.cjb.net
Let me make your mind, leave yourself behind
Be not afraid

Newsgroup: it.comp.lang.c
Titolo: CGI in C/C++

Qualcuno saprebbe dirmi come creare una CGI in C o in C++.
Normalmente utilizzo un compilatore borland 5.02 o quelli più comuni sotto
linux come cc o gcc.
Ho cercato nell'help in linea della borland, ma non ho trovato nulla di
interessante, qualcuno sa indicarmi un sito o una keyword per le ricerche
che mi siano utili.
    Che libreria di dovrebbe importare per realizzare una piccola CGI? Dove
posso trovare qualche esempio?
Anticipatamente ringrazio per ogni utile informazione
       Lorenzo
       E-Mail: 
ita...@technologist.com


Ciao
Newsgroup: it.comp.lang.c
Titolo: sempre_e_ancora_API

Un grazie in primis ad Alex  e agli altri che già in prec hanno illuminato
sull'argo. API.
Vorrei chiedere ora : per usare le api devo per forza utilizzare il
linguaggio C oppure queste chiamate al SO le posso fare anche
all' interno di altri linguaggi. Se sì cosa cambia nel loro utilizzo,
in particolare immagino comunque che il prototipo della funzione ovviamente
deve rimanere lo stesso giusto ?
Doman #2 (di carattere lessico-gergale che mi incuriosisce un sacco )
ma che vuol dire esattamente la parola ISTANZA .Ho trovato scritto per
esempio testualmente :"Un processo è l' ISTANZA di un programma in
esecuzione"
Abbiate pazienza e condiscendenza per chi desidera imparare.
Un saluto !

esecuzione"
Nel vocabolario italiano questa accezione di "istanza" non la
trovi certo ("istanza" c'e`, ma significa tutt'altro), in informatica
e` la traslitterazione dell'inglese "instance" -- una "instance" di
una certa categoria e` un caso specifico che appartiene a
quella categoria ("per esempio" in inglese-> "for instance").
Alex

usare dei LONG e mille trucchetti.
E i parametri passati per riferimento ( = ByRef) cosa sono allora ?
In VB l'unica grossa difficoltà (non comunque insormontabile)
è l'utilizzo di funzioni di callback !
Ciao, Carlo
altieri@infostudi aggiungere .it

è l'utilizzo di funzioni di callback !
Prendiamo un esempio che con le funzioni di
callback non c'entra nulla (anche se, come dicevo,
a furia di "LONG e mille trucchetti", se uno e` proprio
disperato le difficolta` le sormonta tutte:-).
Molte funzioni delle API di Win32, come ad esempio
la comunissima CreateFile, prendono come argomento
un puntatore ad un SECURITY_ATTRIBUTES, e
questa struttura a sua volta contiene un puntatore
ad un SECURITY_INFO.  Per fortuna spesso ci puo`
bastare un valore nullo per l'uno o l'altro puntatore --
ma, se non ci basta, le "grosse difficolta`" stanno
appunto solo cominciando (sormontare si sormontano,
ma con tanta di quella fatica che si potrebbe evitare
usando il C per queste parti del codice...!).
E non e` certo questa l'unica struttura delle API di
Win32 che contiene altri puntatori...
Alex
Newsgroup: it.comp.lang.c
Titolo: complessità

salve, dovrei calcolare la complessità di un programma.quali passi mi
consigliate di seguire?

 consigliate di seguire?
La domanda e' un po' vaga.
Ti concentri su un dato tipo di operazioni, a seconda del
tuo algoritmo, (operazioni aritmetiche, confronti, accessi a disco, etc.)
e calcoli quante operazioni vengono effettuate in funzione
della dimensione dell'input.
A seconda del tipo dell'algoritmo il numero di operazioni
puo' dipendere dalla natura dell'input oltre che
dalla dimensione. In quel caso si dovra' valutare per esempio
il numero medio o il numero massimo di operazioni.
A seconda del programma e dell'algoritmo la cosa puo'
essere banale o difficilissima e richiedere tecniche matematiche
non banali.
Poi dipende se ti interessa una valutazione pratica
(alla fin fine: tempo di elaborazione, su una data architettura)
o una valutazione asintotica (che a quel punto non dipenderebbe
dal linguaggio C, quanto dall'algoritmo utilizzato e quindi
il luogo piu' adatto per discuterne sarebbe it.scienza.informatica).
Dal punto di vista pratico le cose  non vanno sempre come in teoria.
Nella pratica le costanti moltiplicative sono ovviamente importanti,
mentre non lo sono dal punto di vista del costo asintotico.
Nel momento in cui diventano importanti le costanti, le cose si complicano:
tieni conto che accedere agli elementi di una grossa matrice
per righe o per colonne (cosa in teoria equivalmente) in pratica puo'
comportare un differenza significativa nel tempo di esecuzione a causa
dell'uso cache ed altri fenomeni non banali da prevedere che naturalmente
dipendono anche da compilatore e processore etc.etc.
ciao
nb

Newsgroup: it.comp.lang.c
Titolo: Aiuto Divisione

Salve, sto lavorando su un PIC per visualizzare su un LCD la tensione 
misurata.
Il problema č che non riesco a fargli stampare la tensione fino alla 
seconda cifra decimale.
Faccio cosě:
short valor;
short pippo, decimale;
char s[10];
float f;
			valor = ADRESL+(ADRESH<<8);
			decimale = (short)(valor*3.90)%1024; //Per il resto
			pippo = (short)(valor*3.90)/1024; //La parte intera
			sprintf (s, "%.2f", (float)pippo);
			f = atof (s);
 
			LCD_PUTS("Valore :");
			LCD_PUTUN(f);
Credo che in "s" dovrei avere almeno la parte intera perchč "pippo" č di 
tipo short ( quindi alla fine un int ). Perň in "s" mi stampa solo e 
sempre la lettera "f" (da non confondere con la "f" variabile di tipo 
float).
Quello che dovrei fare č prendere le 2 cifre + a sinistra di "decimale" 
e stamparlo sul Display.
Grazie


Tra l'altro mi sono appena accorto che la parte decimale non č corretta 
come credevo!
Newsgroup: it.comp.lang.c
Titolo: using c to write cgi

How can a cgi program call another C program...
the cgi is written using unix-c....
Can I use popen, exec or other?
But when i used exec, my program will always core dump why?
I hope someone could give me the solutions... it is very urgent coz i have
to hand out my project soon... i have tried so many alternative ways but
failed... 
Thanks for your help...

,

Same reply as before.
Neither popen nor exec are standard C functions.
Try system("my_prog");.
Ciao Paolo
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own

Newsgroup: it.comp.lang.c
Titolo: apertura file

mi sapete dire cosa succede a livello di sistema quando apro un file con
fopen()? viene caricato nella ram? a cosa serve e come viene utilizzata la
struttura FILE che si trova in stdio.h?
typedef struct _iobuf
{
 char* _ptr;
 int _cnt;
 char* _base;
 int _flag;
 int _file;
 int _charbuf;
 int _bufsiz;
 char* _tmpfname;
} FILE;

 } FILE;
Questi e' (o dovrebbe essere) il modo in cui MS utilizza i campi
della struttura FILE. Ma lo standard stabilisce che esiste una
struttura FILE non cosa contiene. Altre strutture FILE potrebbero
contenere campi diversi o gli stessi campi con usi diversi.
Pertanto mettere le mani direttamente nella struttura FILE non e'
salutare.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 salutare.
Addirittura, io sconsiglierei anche solo di metterci il naso... :-)
Ciao.
Marco
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c
Titolo: Problema con il rand

Salve a tutti, premetto che sto studiando il C, perciò nn
sorprendetevi se la mia domanda sembri abbastaza stupida :)
Ho scitto il seguene codice:
/*Esercizio 5.13	eser05_13.c
Scrivere delle istruzioni che assegnino alla variabile n numeri interi
casualicompresi nei seguenti inetrvalli:
a)1<=n<=2
b)1<=n<=100
c)0<=n<=9
d)1000<=n<=1112
e)-1<=n<=1
f)-3<=n<=11*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
	/*Randomizza il generatore di numeri casuali usando l'ora corrente*/
	srand(time(NULL));
	printf("1<=n<=2 \t%d\n", 1+rand()%2);
	printf("1<=n<=100\t%d\n",1+rand()%100);
	printf("0<=n<=9	\t%d\n", rand()%9);
	printf("1000<=n<=1112\t%d\n", 1000+rand()%1112);
	printf("-1<=n<=1\t%d\n",(-1)+rand()%1);
	printf("-3<=n<=11\t%d\n",(-3)+rand()%11);
	return 0;
}/*Fine della funzione main*/
Come vedete si tratta di un semplice esercizio dove devo stampare un
intero compreso tra due numeri.
Il programma funziona, ma solo parzialmente, alla 4°istruzione nn mi
da il valore desiderato, mi da sempre un valore superiore a 1112.
Non riesco a capire dove sbaglio, potete darmi una mano?

 Non riesco a capire dove sbaglio, potete darmi una mano?
Stai sommando 1000 ad un numero compreso fra 0 e 1112 ?
Pleg 


Scusa ma per far uscire un x che sia compreso tra 1000 e 1112 non
bisogna fare:
x=1000+rand()%1112   ???

Scusa ma per assegnare a x un valore compreso tra 1000 e 1112 non
bisogna usare l'istruzione:
x=1000+rand()%1112 ???

 x=1000+rand()%1112   ???
"rand()%1112" ti restituisce un numero fra 0 e 1111 ?
Se si', aggiungere 1000 restituira' un numero fra 1000 e 2111...
Pleg 

Allora quale sarebbe l'istruzione corretta per far uscire un numero
compreso tra 1000 e 1112?


dovrebbe essere:
x=1000+rand()%(1112 - 1000)
cioe' un numero casuale compreso tra 0 e 112, il tutto + 1000.
Ossia un numero casuale compreso tra 1000 e 1112
Ciao.
Luigi 


"x = 1000 + rand() % (1112 - 1000)" genera numeri compresi fra 1000 e 
1111 compresi.  Lo stesso vale anche per altri statement che non 
generano valori richiesti.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 ha scritto nel messaggio

Grazie tante :)

 compresi.
Ooops!! :-o
hai ragione era:
"x = 1000 + rand() % (1113 - 1000)"
Ciao.
Newsgroup: it.comp.lang.c
Titolo: [?]Per i più esperti ...

Salve , avevo già chiesto qualche giorno fà , come posso fare a creare una
directory
in C , la risposta che ho avuto e stata la stessa dell'help di Rhide.
Ho provato ma non funziona
#include <sys/stat.h>
#include <sys/types.h>
mkdir("c/ ciao/tmp",mode_t mod);
int mkdir("c:\  /* qui mi da errore per lo slash vicino del c */ ciao",
mode_t mode);
Grazie
Ciao  Roberto

 Ho provato ma non funziona
ma e eseguire semplicemente un comando del sistema operativo?

 ciao", mode_t mode);
gli \ nelle virgolette si indicano doppi: "c:\\ciao", altrimenti sono 
codici di caratteri come \t \n \r

Newsgroup: it.comp.lang.c
Titolo: dove scarico compilatore c e altri?

Ciao, dove posso scaricare un compilatore c,c++, turbo pascal?
Pių che compilatori vorrei proprio quegli editor con la guida in linea che
permettono di fare il compile, debug, build
Rispondetemi anche in e-mail
Grazie


|«Da un punto di vista obiettivo,
|preoccuparsi del senso o del fine della
|nostra esistenza mi è sempre parso
|assolutamente vuoto di significato.»
|                        Albert Einstein

 ha scritto nel messaggio
news:8v9i7i$9t4$1...@nread1.inwind.it...


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

Qualche guida on-line per imparare qualcosina? Grazie mille

Cercati su un motore di ricerca qualsiasi in italiano (
www.google.it
  va
benissimo) "TrickyC" di BarningaZ.
Per iniziare col C č il massimo in italiano. Da qualche parte c'č pure un
tutorial sul C++ molto buono di un signor Paolo Marotta..
Cmq vedi su 
www.programmazione.it
, e trovi anche qualcosa su
http://gpi.infomedia.it

Newsgroup: it.comp.lang.c
Titolo: cerco corso linguaggio C

Salve  , mi chiamo Rebel10 , frequento da poco il vostro newsgroup , vorrei
sapere
dove posso scaricare un corso per linguaggio C su Internet , se esiste.
Ciao
                                    Rebel10

rebel10 ha scritto nel messaggio ...


 wrote in message
nO1n3.47165$lQ1....@typhoon.libero.it...

Newsgroup: it.comp.lang.c
Titolo: problemino!!

So' gia' benissimo che per alcuni di voi sara' una stupidata,ma dovrei fare
un programmino che dati n-numeri mi restiutisca tutte le loro possibile
combinazioni pero' a gruppi di k con k<n.
Cioe una specie di enalotto per esmpio dati 10 numeri mi faccia tutte le
combinazioni a gruppi di 8.
Se mi postate qualche riga di codice mi leverate da un grosso problema!!
conto su di voi .
Grazie

 ha scritto nel messaggio
news:ae2rhv$fv2$1...@lacerta.tiscalinet.it...



I'm not prejudiced, I hate everyone equally.

Newsgroup: it.comp.lang.c
Titolo: interfaccia per motore di ricerca

Ciao,mi chiamo Francesco e vorrei qualche informazione su come interfacciare
un motore di ricerca con il C in ambiente linux:
so che esistono delle funzioni Qt che permettono di farlo(informatemi con
qualche dritta),ma mi piacerebbe sapere se ci sono altri metodi per
implementare l'interfaccia.
Grazie

Ciao,mi chiamo Francesco e sto cercando di sviluppare un interfaccia per
motore di ricerca con il C
sotto l'ambiente Linux: so che esistono delle funzoni Qt,ma vorrei sapere se
c'è almeno un altro modo
per implementarla.
Grazie della collaborazione!

sotto l'ambiente Linux: so che esistono delle funzoni Qt,ma vorrei sapere se
Se intendi sotto X-Windows allora potresti scrivere
la cosa a livello Xlib (difficile) o appoggiandoti
a qualche libreria di Widget di libello piu' alto.
Una alternativa interessante potrebbe essere spezzare
il problema in due parti:
 - Motore di ricerca implementato con una interfaccia
   a riga comando scritto in C per avere le massime
   prestazioni possibili
 - Una GUI scritta in TCL/PERL/Ruby/Python che si
   appoggi a Tk per gestire la GUI e che chiami il
   motore scritto in C per fare le ricerche
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff
Newsgroup: it.comp.lang.c
Titolo: Dove finisce 'sta variabile?

Heap ..... o Stack  questo e' il problema!
C'e' almeno una persona volenterosa che riesca a spiegarmi dove dove finisce
ogni tipo di variabile? (locali, globali, oggetti allocati dinamicamente,
ecc)
Vi ringrazio fin d'ora le migliaia (....forse milioni?) di persone che mi
aiuteranno
    BR66  
xyzfa...@flashnet.it
 (senza XYZ!)

ecc)
sinteticamente :
variabili locali sullo stack.
variabili globali nel data segment.
oggetti allocati dinamicamente nella memoria restante (cioe' l'heap).
---------------------------------
Andrea,
mica uno qualunque...

     BR66  
xyzfa...@flashnet.it
 (senza XYZ!)
Tutte le variabili dichiarate in fase di compilazione (locali, globali)
vengono allocate nello stack. Tutti gli oggeti dinamici (puntatori)
finiscono nello heap.
Ciao Egoz

...

Caro Andrea  e caro Egoz vi ringrazio delle informazioni ma .... mettetevi
d'accordo selle variabili globali !
A parte questo auguri di Buon Natale a tutti
BR66

Variabili automatiche (quelle definite all'interno di una funzione) ed i
parametri di una funzione sono allocate sullo stack.
Gli oggetti allocati con malloc ( o new in C++) sono nell'heap.
Lo spazio per le variabili globali è riservato nel segmento dati del
programma già in fase di link.

ecc)
mini esempio :
const int costante = 9;
int globale_zero = 0;
int globale_bo;
int func(void)
{
  int z = 9;
 int *k = malloc(100);
  return z;
}
la variabili globali (global_zero, global_bo) sono nel segmento dati
[piu` precisamente global_bo e` in BSS...] le variabili locali come z
e *k sono nello stack, mentre la memoria che usi tramite malloc e`
presa dallo heap.
per la "variabile" costante, alcuni compilatori la mettono nel
segmento dati, ma altri (DJGPP di sicuro) la mettono nel codice,
assieme alle stringhe.
Buon Natale a tutti
[ranger, email: 
ran...@queen.it
]

d'accordo selle variabili globali !
Solo le variabili locali vengono allocate sullo stack, cioe' quelle
che nascono e muoiono.
Quelle globali trovano spazio nel data segment.


presa dallo heap.
Una precisazione : e' k a stare nello stack, mentre *k nello heap !
Cioe' i puntatori sono trattati come variabili normali (locali o
globali che siano).
E' solo l'oggetto puntato che nasce e muore dinamicamente nella
memoria heap.
------
Andrea
------
Newsgroup: it.comp.lang.c
Titolo: Linux && Socket

Ciao a tutti!
Innanzitutto mi scuso se non sono riuscito a leggere tutti gli
articoli del gruppo che riguardano le socket, è perchè ho veramente
solo pochi minuti, quindi vi prego di non arrabbiarvi se la risposta
alla mia domanda è già presente nel NG, magari indicatemela soltanto.
Ho capito, da quello che ho avuto modo di leggere fra i vari post, che
le socket si trattano in maniera diversa da sistema a sistema, io
opero con Linux, ed ho bisogno di aprirne una verso un server
sull'internet; Per la compilazione del programma ho a disposizione gcc
e al lato server non posso sapere a priori se ci sarà uno UNIX, un
Linux, un Windows o qualsiasi altro sistema operativo.
Potete cortesemente dirmi dove posso reperire una spiegazione facile
su come aprire una socket e se i files header necessari sono già
disponibili o devo scaricarli da qualche parte?
Grazie mille per l'attenzione e per la pazienza.
--
Andrea Zwirner
wul...@email.it

 opero con Linux, 
La parola chiave e` linux:
it.comp.os.linux.development
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Ci sono le balle , le megaballe e le statistiche".
 Mark Twain

 disponibili o devo scaricarli da qualche parte?
Ovviamente in inglese:
http://www.uwo.ca/its/doc/courses/notes/socket/
L'interfaccia socket dovrebbe essere standard, anche se diversi SO hanno
alcune variazioni (come le WinSock!)
I file di header sono disponibili di base su tutti gli UNIX e derivati.
(sys/types.h e sys/socket.h)
Per quanto riguarda la controparte, non ha importanza qual'è il SO.
Lorenzo
Newsgroup: it.comp.lang.c
Titolo: Piccolo esempio

Salve,
 potreste farmi un esempio in C del programma che allego. E` un semplice
ordinamento alfabetico. Grazie in anticipo!
[/*INIZIO*/]
Dim n$(5)
n$(0) = "Rossi Mario"
n$(1) = "Bianchi Paolo"
n$(2) = "Esposito Gabriele"
n$(3) = "Mancini Luca"
For i=0 To 3-1
    For j=i+1 To 3
    If n$(i)>=n$(j)
       a$=n$(i)
       n$(i)=n$(j)
       n$(j)=a$
    EndIf
    Next j
Next i
For k=0 To 3
PrintN(n$(k))
Next
End
[/*FINE*/]
Saluti.
--
    _
 Fa/_)io
  /__)enedetti

 ordinamento alfabetico. Grazie in anticipo!
ho fatto una traduzione 1:1, spero ti vada bene lo stesso.
ciao
donCiccio
[/*INIZIO*/]
#include "string.h" /* per funzione strcmp */
#include "stdio.h"  /* per funzione printf */
int main ( void )
{
  char * n[5];                     /* Dim n$(5) */
  int i,j,k;
  char * a;
  n[0]= "Rossi Mario";             /* n$(0) = "Rossi Mario" */
  n[1]= "Bianchi Paolo";           /* n$(1) = "Bianchi Paolo" */
  n[2]= "Esposito Gabriele";       /* n$(2) = "Esposito Gabriele" */
  n[3]= "Mancini Luca";            /* n$(3) = "Mancini Luca" */
  for( i=0 ; i<=3-1 ; i++ )        /* For i=0 To 3-1 */
  {
    for( j=i+1 ; j<=3 ; j++ )      /*    For j=i+1 To 3 */
    {
       if( strcmp( n[i],n[j] )>=0 )/*    If n$(i)>=n$(j) */
       {
         a    = n[i];              /*       a$=n$(i) */
         n[i] = n[j];              /*       n$(i)=n$(j) */
         n[j] = a;                 /*       n$(j)=a$ */
       }                           /*    EndIf */
    }                              /*    Next j */
  }                                /*Next i */
  for( k=0 ; k<=3 ; k++ )          /*For k=0 To 3 */
  {
    printf( "%s\n",n[k] );         /*PrintN(n$(k)) */
  }                                /*Next */
  return 0;                        /*End */
}
[/*FINE*/]

#include "stdio.h"  /* per funzione printf */
#include <string.h>
#include <stdio.h>
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

ho fatto una traduzione 1:1, spero ti vada bene lo stesso.
 Ti ringrazio, č quello che mi serviva.

Newsgroup: it.comp.lang.c
Titolo: Leggere byte da indirizzo fisico

Salve a Tutti,
mi trovo nella situazione di dover leggere un byte da un indirizzo
fisico di una scheda di aquisizione (H300), con il basic l'istruzione
sarebbe molto semplice imp(&H300), con il perl non ho trovato nessuna
libreria o funzione che mi permetta di accedere direttamente ad una
locazione, qualcuno di Voi ha già affrontato questo problema?
N.B: Devo sviluppare per S.O. Unix per cui sono benvenuti suggerimenti
anche in C .
Saluti
G.B.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

locazione, qualcuno di Voi ha già affrontato questo problema?
In C sicuramente non esiste una libreria standard tanto dipendente
dall'architettura della macchina che usi.
Dando per scontato che tu usi un PC Intel-like, se conosci un pò di
assembler, la soluzione più semplice e veloce è di scrivere una breve
procedura richiamabile dal C.
-- 
Cordiali saluti
  Artemio

procedura richiamabile dal C.
No, non lo e', specie se sta usando un sistema operativo che
sfrutta la memoria protetta.  La soluzione, almeno sotto
Windows, e' quella di creare un device driver.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

Newsgroup: it.comp.lang.c
Titolo: Array vs puntatori !!!!

Ciao ragazzi,
ho un piccolo problema col C :
vi ricordate che array e puntatori sono intimamente legati? Bč di
questo si tratta!!
Definito:
int vet[10];
int* p1;
int* p2;
int* p3;
int* p4;
e fatto :
p1 = vet
p2 =&vet
p3= vet[0]
ovviemante con p3 il compilatore si č arrabbiato, ma con p1 e p2 no (e
fino a qui č normale!)
ma la cosa piů strana č che al watch p1 era UGUALE a p2, cioč per il
compilatore vet coincide con &vet !!!!!
in sintesi:
vet = &vet
sono graditi commenti qualsiasi
La cosa accade sia col compilatore Microsoft che col Borland!
rispondere a 
rac...@racine.ra.it
(purtroppo dove leggo la posta non posso consultare i news group)



sono graditi commenti qualsiasi
compila con i warnings attivi
Oha
-- 
A: Is FOR an acronym or a TLA?
B: the second.

 compilatore vet coincide con &vet !!!!!
Come indirizzo coincide senz'altro ma come tipi sono diversi. Infatti
vet è un array di dieci interi (int [10]) mentre &vet è un puntatore ad
array di dieci interi (int (*)[10]). Il DJGPP segnala infatti un
warning.
EMG

compilatore vet coincide con &vet !!!!!
In realta` se non erro semplicemente &vet (un puntatore ad un array di
10 int) viene implicitamente convertito in int* per questo  la cosa 
funziona.
E` tutto da ricercarsi nella "somiglianza" tra array e puntatori.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: CONTROLLO FORMALE CODICE C

Sto cercando un programma che sia in grado di eseguire un controllo formale
sulla correttezza di un file di codice C.
Il mio compilatore non e' perfetto e non rileva alcuni errori.
Ad esempio se dichiaro che una funzione deve ritornare un valore, ma poi al
suo interno non aggiungo l'istruzione return (ValoreDiRitorno); non mi viene
data nessuna segnalazione di errore, neppure un warning.
Non posso cambiare i compilatore, perche' e' un compilatore specifico per un
microcontrollore.
Qualcuno sa darmi qualche dritta?
Grazie
--------------------------------
Inviato via 
http://usenet.libero.it

 sulla correttezza di un file di codice C.
Be', potresti portare il tuo codice C su una piattaforma Linux (+ comoda a
mio avviso) e controllarlo con gcc, magari con warning "pedantic" attivo.
Sotto UNIX, generalmente, si trova un programma chiamato "lint" che esegue
dei controlli piuttosto rigorosi sul codice. Prova a vedere se ne recuperi
una versione aggiornata.
Entrambi (gcc, lint) esistono anche per Windows.


 Entrambi (gcc, lint) esistono anche per Windows.
esiste anche FlawFinder, che fa dei controlli anche sulla sicurezza 
intrinseca (possibili buffer oveflow, etc..), usa python e non e' 
complicato portarlo su windows 
www.dwheeler.com/flawfinder

 esiste anche FlawFinder, che fa dei controlli anche sulla sicurezza
Grazie a entrambi.
Per il momento ho scaricato Splint da questo sito
http://lclint.cs.virginia.edu/
Ci sono diverse versioni per Linux e anche per Windows. Oltre a sorgenti e
documentazione.
Io ho scaricato la versione per Windows, perche' in ufficio non ho Linux.
A casa vorrei provare FlawFinder, ho letto che dovrebbe essere uno dei
pacchietti della distribuzione.
Saluti
GIGI


Newsgroup: it.comp.lang.c
Titolo: Prototipo e dichiarazione delle funzioni

 mailto:
gar...@usa.net
 <
- >ICQ UIN# 23780140 <-

Mi spiego,mi sembra piu' logico cosi'... o no ? :-)
No, per il semplice motivo che il C non prevede che una funzione venga
definita cogliendo il tipo che restituisce dal suo prototipo.
Anche perche' scrivere 
void andrea () ;
e 
andrea () 
{
   printf ( "ciao" ) ;
}
significa assumere che andrea() nel secondo caso restituisca un int
per default e quindi nasce un conflitto di tipi.

per default e quindi nasce un conflitto di tipi.
Una curiosita' : esistono forse casi in cui prototipo e dichiarazione
della funzione possono essere diversi ?


della funzione possono essere diversi ?
prototipo e dichiarazione sono sinonimi.
Forse vuoi dire prototipo e *definizione* ed in tal caso la risposta
e' no proprio perche' il prototipo serve ad accertare che la funzione
definita venga usata nel modo corretto.
Newsgroup: it.comp.lang.c
Titolo: Passare una matrice a una funzione, dubbi...

Se io dichiaro nel main una matrice cosě:
char matrice[30][100];
č una matrice di 3000 elementi, 30 righe e 100 colonne,e fin qui ok.
Se dichiaro una funzione cosě:
void func (char matrice[][100]);
e poi le passo la matrice in questo modo:
func (matrice);
la funzione mi modifica la matrice del main (cioč viene passato 
l'indirizzo dell'array) oppure tutto quello che faccio dentro a func() č 
fatto su una copia dell'originale (cioč viene passato il "valore" 
dell'array) ?
-- 
God is real, unless if declared integer.
Powered by Debian GNU/Linux

 
Bon, risolto, si passa il puntatore al primo elemento (come era 
ovvio..sono un po' fuso...)

Newsgroup: it.comp.lang.c
Titolo: ha ancora senso l'assembler?

nel mondo dei computer superveloci, dei programmi da megabyte, dei
grandi database, delle infinite interfacce grafiche ha ancora senso
voler imparare l'assembler? Personalmente sono tentato di addentrarmi
nell'approfondimento di questo mondo, ma sono restio a cominciare
perché non vedo grandi applicazioni. Siete in grado di farmi cambiare
idea?

pibadado ha scritto:

it.comp.programmare.
Sei OT qui dentro.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 wrote in message
news:1119712393.2...@g44g2000cwa.googlegroups.com

L'assembly e' il linguaggio piu' a basso livello che esista. Conoscere
l'assembly significa conoscere come opera effettivamente la macchina su
cui sta girando il codice.
Oggi e' utilizzato per programmare microcontrollori o parti di sistemi
embedded, etc
Quando poi esce una nuova scheda grafica con particolari funzioni non
ancora diponibili, ad esempio, nelle directX se vuoi utilizzarle puoi
farlo solo tramite assembly (ad esempio)
Se poi ti initeressi di reverse engineering...
Secondo me una infarinatura di assembly (8086 almeno) non fa male
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 [...] ha ancora senso voler imparare l'assembler? [...]
Il cuore dei sistemi operativi e' ancora programmato soprattutto in
assembler, cosi' come credo lo siano i driver e le routine piu' critiche di
alcuni programmi.
Anche se e' storia passata, ricordo con grande piacere le ore passate ad
ammirare splendidi programmi demo, che entusiasti programmatori facevano
circolare quindici anni fa. Naturalmente erano 99% assembler. Ambientazioni
3d in movimento fluido su un 386sx, tunnel luminosi, fuoco e luci
spettacolari, tutto in pochi Kb di codice. Quelli si' erano programmatori, e
i giochi 3D di oggi per quanto mi riguarda non riescono a darmi emozioni
simili.
Personalmente con il C mi trovavo benissimo: e' potente, facile e
"scalabile" (si dice cosi'?) e anche veloce; Java e' una vergogna quanto a
velocita', dovrebbe essere illegale sprecare tanta cpu :-), e non so come
siano messi gli altri linguaggi interpretati. E' un peccato che oggi spesso
si dia la precedenza al tempo di programmazione piuttosto che ai cicli
macchina occupati dai programmi in esecuzione :-(
Concludendo: salvo che per le applicazioni per il web, per me C e' il
migliore.
-- 
enos1976 

 
A dirla tutta, nella mia infinita lista di "progetti da fare" c'e' pure
un CMS realizzato interamente come CGI in C :-)
Se mai dovessi iniziarlo mi faccio sentire da queste parti, hai visto
mai che trovo qualche volontario ;-)
-- 
Roberto -MadBob- Guido
mail bob4mail***@***
gmail.com
web 
http://madbob.homelinux.com
BrainTop Project maintainer - 
http://braintop.sf.net
Newsgroup: it.comp.lang.c
Titolo: non riesco a decifrare il seguente sorgente (poche istruzioni)

non capisco come lavorano le seguenti istruzioni:
boolean empty(const stack *stk)
{
  return ((boolean) (stck -> cnt == EMPTY)); //la mia perplessitą e su
}				//quello che restituisce return
e 
printf("stack count:%3d%s",
	 stk -> cnt, (stk -> cnt 0) ? "\n" : "      ");
qui non capisco le istruzioni inserite dopo la stringa
questo č un esempio di un valutatore di un'espressione polacca preso
dal Kelley Pohl pag 397
spero di avervi fornito tutte le info necessarie
spero possiate aiutarmi
-- 
Daniele
==============
POTERE E POTENZA!
(saluto evroniano)
ICQ: 106349465 nick: grifter
-togliere NOSPAM per le risposte-

qui non capisco le istruzioni inserite dopo la stringa
dopo stk->cnt immagino che tu abbia dimenticato un operatore
di confronto... supponendo che l'istruzione che volevi
scrivere fosse:
printf("stack count:%3d%s",
       stk -> cnt, (stk -> cnt == 0) ? "\n" : "      ");
allora viene stampato un numero di almeno 3 cifre (nel senso
che se il valore ha meno cifre vengono inseriti spazi a
sinistra sino ad arrivare a 3 cifre) e di seguito viene
stampato un "a-capo" oppure 6 spazi, a seconda che il
valore del campo stk->cnt rispettivamente sia zero
oppure no. Ad esempio:
  stk->cnt     stringa stampata
 ----------   ------------------
    123          "123      "
     10          " 10      "
      3          "  3      "
   6502          "6502      "
      0          "  0\n"
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff


Qui non saprei. Esattamente così com'è il compilatore dovrebbe arrabbiarsi
non poco. Quello che probabilmente intendeva fare il programmatore era
scrivere in riga i valori di "stk->cnt" fino a quando non trovasse uno zero
(o un valore diverso da zero, mah?). La riga dovrebbe essere a mio parere
riscritta in uno dei due modi seguenti:
1.
printf("stack count:%3d%s", stk -> cnt, (stk -> cnt == 0) ? "\n" : "
");
scrive stk->cnt seguito da un newline ogni volta che stk->cnt è nullo,
altrimenti aggiunge qualche spazio e procede sulla stessa riga.
oppure,
2.
printf("stack count:%3d%s", stk -> cnt, (stk -> cnt) ? "\n" : "      ");
scrive stk->cnt seguito da un newline ogni volta che stk->cnt è non nullo,
altrimenti scrive zero e aggiunge qualche spazio.
Ciao
Riz

	 stk -> cnt, (stk -> cnt == 0) ? "\n" : "      ");
Questo e' un esempio di sintassi piuttosto criptica e si traduce in :
printf( "stack count:%3d", stk->cnt ) ;
if ( stk->cnt == 0 ) 
   printf( "\n" ) ;
else
   printf( "      " ) ;
Newsgroup: it.comp.lang.c
Titolo: DOS4GW Quel misterioso ... HELP !

Ho un piccolo problema.. ho compilato dei tools(Con VC++ e con DJGPP) che
devono girare sotto dos e quando li eseguo il programma termina dicendo
errore dpmi.
Ho risolto il problema con un utility che si chiama pmod ma é molto
macchinoso il procedimento e volevo sapere se qualcuno conosce come usare il
dos4gw nel mio programma..... o una maniera per risolvere questo
inconveniente..


Il Dos Extender Dos4gw era usato dai compilatori Watcom.
Visual C++ a 16 bit comprendeva come Dos Extender Phar Lap Lite.
Visual C++ a 32 bit NON richiede Dos Extender
HTH

errore dpmi.
(ti parlo per DJGPP - anche se è OT) DJGPP fa girare i suoi programmi in
modalità protetta, il che vuol dire che non possono più fare tutto quello
che vogliono ad es. con gli interrupt, il disco, etc., ma devono rispettare
delle regole di convivenza; per contro sono supportate estensioni come lo
swapping su disco delle pagine di memoria inutilizzate.
Serve quindi un gestore dei servizi di memoria dpmi: prova a cercare e
scaricare dal sito di DJGPP (magari ce l'hai già) il file cwsdpmi.exe e
mettilo nella directory del tuo programma - tutto dovrebbe funzionare.
Lanugo

Newsgroup: it.comp.lang.c
Titolo: Re: ANSI-C e main

 vera e propria?
Lo standard dice:
int main(int argc, char *argv[]) { /* ... */ } 
*o* equivalenti. Negli esempi di "equivalenti" mette un typdef di un int
oppure scrivere char** per il secondo.
Ovviamente le variabili possono essere chiamate sostanzialmente a
piacere.
Lo standard dice che e' accettabile anche una main definita in qualche
modo 'implementation defined'. Io pero' su questa non ci giocherei
troppo, anzi.
-- 
-riko

 ANSI-C?
Lo standard non è disponibile on-line.  Puoi però trovare dei draft 
del prossimo standard.  
http://www.open-std.org/jtc1/sc22/wg14/www/docs/
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 Dove si può leggere una versione online dell'ultimo standard ANSI-C?
Puoi comprarlo.
-- 
-riko

 del prossimo standard.  
http://www.open-std.org/jtc1/sc22/wg14/www/docs/
in particolare può leggere questo:
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
Newsgroup: it.comp.lang.c
Titolo: Input da tastiera

Vorrei sapere se c'č un modo per "accalappiare" qualsiasi
e ripeto, qualsiasi segnale invii la tastiera al computer.
Ho provato del codice che riconosceva il tasto premuto e
restituiva il codice ASCII, ma quello che mi serve č qualcosa
di piů perchč la mia tastiera ha 2 tasti che servono per lo
spegnimento e per lo stand-by. Ora non č che mi servono, ma
per puro scopo didattico vorrei sapere come carpire anche
il segnale di quei due tasti, che non venivano assolutamente
considerati dai programmi sopracitati.
Grazie.
(Oppure sono finti? :])
--
Sparviere
spar...@ngi.it
http://sparviere.tsx.org

 e ripeto, qualsiasi segnale invii la tastiera al computer.
Non ci sono funzioni C standard per fare quello che vuoi tu.
Se non ricordo male usi il BorlandC (post precedente su grafico di
funzioni), provati questo programma che 'Trappa' l'interrupt 9 e ti fa
vedere cosa realmente la tastiera dice al PC, per ogni tasto premuto.
buon divertimento...
ciao
donCiccio
------------
#include "conio.h"
#include "dos.h"
#include "stdlib.h"
#include "stdio.h"
void interrupt (*oldint9) ( void );
unsigned char buf[32];
unsigned char *pin =buf;
unsigned char *pout=buf;
int  blen=0;
void interrupt newint9 ( void )
{
  if( blen<sizeof( buf ) )
  {
    *pin++ = inportb( 0x60 );
    blen++;
    if( pin>=buf+sizeof( buf ) )  pin=buf;
  }
  oldint9();
}
void restoreint9 ( void )
{
  setvect( 9,oldint9 );
}
int main ( void )
{
  int  done=0;
  oldint9 = getvect( 9 );
  atexit( restoreint9 );
  setvect( 9,newint9 );
  while( !done )
  {
    if( blen )
    {
      unsigned char c=*pout++;
      blen--;
      printf( "%02X\n",c );
      if( pout>=buf+sizeof( buf ) )  pout=buf;
    }
    if( kbhit() )
    {
      switch( getch() )
      {
      case  0:
        getch();
        break;
      case 27:
        done = 1;
        break;
      }
    }
  }
  return 0;
}
---------------

 Se non ricordo male usi il BorlandC
Esatto :)
Thanks.
--
Sparviere (che crede che si farą sentire spesso sul NG in futuro)
spar...@ngi.it
http://sparviere.tsx.org

e ripeto, qualsiasi segnale invii la tastiera al computer.
Non in C standard.
--
Walkie...@Libero.It (ICQ# 8143647)