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

Salve a tutti, avrei un grosso problema: sto lavorando da qualche
settimana ad un programma e fino ad oggi andava tutto bene, ma stasera
il compilatore che uso (dev c++) ha avuto qualche problema a compilare
il programma ed il risultato è che mi ha fatto sparire i file .c di
cui era composto il programma. Sono rimasti solo dei file con
estensione .o. Ora vi chiedo: è possibile ricostruire i file .c da
quelli?
Scusate se la domanda vi potrà sembrare ridicola, ma per me è
questione di vita o di morte (vabbè, quasi :))



per quanto ne so io no.
da un file oggetto è possibile solamente ricavarne il relativo sorgente
assembly usando un deassembler, essendo la trascrizione in linguaggio
macchina dell'altro.
Lavoro ben più arduo è ricostruirci linguaggio C. Avevo letto da qualche
parte che qualche tentativo era stato portato avanti per avere un
decompilatore funzionante ma non aveva portato a scarsi successi;
d'altronde per fare una operazione esistono infiniti modi, e un
decompilatore non può sapere quale hai utilizzato, e per di più i nomi
delle variabili da te usate vanno tutte perse. (esisteranno altri
problemi che ora non mi suvvengono..)
Ciao
matico

macchina dell'altro.
Pazienza, grazie lo stesso :)

Newsgroup: it.comp.lang.c
Titolo: Linux e dll =?

Forse e' una domanda scema..
dato che ho realizzato un prog in java che si interfaccia con dll
scritte in c sotto ambiente windows... vorrei sapere per curisita' se
riportando una dll sotto linux questa funziona allo stesso modo .
so' di essere javista e quindi la penso un po troppo a oggetti
universali:P
ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

universali:P
Si ma Java perde la portabilità se fai chiamate native sul SO
--
Rhymes (
rhy...@myself.com
)
Brainbench Certification:
Language: Java 1, Score: 3.29, Date: 2001-10-02 
http://www.brainbench.com/transcript.jsp?pid=2435730

Newsgroup: it.comp.lang.c
Titolo: ANSI C

la libreria "conio.h" e' ansi C?

 
No.
Giorgio

 la libreria "conio.h" e' ansi C?
Un modo per scoprirlo in generale è usare qualche funzione della
libreria e compilare con i flag -ansi -pedantic
se il tuo compilatore li supporta, o provare uno che lo faccia, e.g.
gcc.
Saludos
Adriano

Newsgroup: it.comp.lang.c
Titolo: fine programma

mi sapete dire se esiste un comando per far terminare un programma quando si
preme un tasto?
--
---
Saluti,
Antonello PINNELLA

 preme un tasto?
CTRL-C? :-)
--- bye

 ha scritto nel messaggio
news:s6hbc.10462$rM4.3...@news4.tin.it...


 programma quando si preme un tasto...
In "pure-C" non si può. Ti dirò di più... Non si può neanche aspettare la
pressione di un singolo tasto (nel senso di "premi spazio per continuare").
Lo sapevo cosa volevi. La mia era una battuta :-)
--- bye

 preme un tasto?
usa la funzione exit(), il cui argomento è il codice di ritorno del
programma, ad esempio "exit( 0 );"
Ciao

 programma quando si preme un tasto...
se hai un menu', altrimenti dai maggiori info ^__^:
int main(){
....
....
....
while(toupper((ch=getchar()))!='U'){
	/*quello che vuoi fare*/
}
return 0;
}
-- 
Er Baitch
"Live Your Life!!!" (Ring ain't a jail)
http://baitch.altervista.org/
Newsgroup: it.comp.lang.c
Titolo: lettura di header

Giorno a tutti.
Sto preparando un programma che lavora sugli header di file mp3 per trarre statistiche varie.
La lettura dell'header pero' mi da' un po' di problemi, in quanto è una struttura di 4 byte totali per 13 variabili. Ognuna di queste ha dimensione minima di 1 e massima di 12 bit.
Per leggere da file bit-per-bit non ho trovato nulla (sapete suggerirmi qlc?).
In ogni modo per ora ho rappezzato dichiarando un puntatore a void, riempiendolo con la lettura di un elemento da 4 byte attraverso fread. Visualizzando il contenuto del puntatore castato però i valori sono fuori dal range dei valori ammessi per quelle var.
Che ne pensate?

 Per leggere da file bit-per-bit non ho trovato nulla (sapete suggerirmi
qlc?).
credo che leggere dal file direttamente bit per bit non sia possibile ma
puoi caricare i 4 byte come interi o char e poi
fare gli schift che ti servono per recuperare i campi.
ti faccio un esempio per spiegarmi meglio:
mettiamo che hai letto un char (8 bit) e ti interessano i bit dal 2 al 6 (i
bit li numero da dx a sx)
basta fare uno schift a dx di 1 per eliminare il 7 bit e poi uno a sx di 3
per portare i bit nella bassa del char ed eliminare i bit 0-1
ciò che succede è questo:
7 6 5 4 3 2 1 0
0 1 0 1 1 0 1 1     char inizale
1 0 1 1 0 1 1 0     schift a dx
0 0 0 1 0 1 1 0     schift a sx
il codice è il seguente (supponiamo che il char sia x)   x26=((x<<1)>>3);
spero di esserti stato utile. :)
by G;G

 fare gli schift che ti servono per recuperare i campi.
si ma le var hanno size variabile, che puo' essere anche a cavallo tra un byte e l'altro...
ci dev'essere un altro modo...

 ci dev'essere un altro modo...
be in quel caso puoi posizionare i bit nelle posizioni corrette e fare un or
bit a bit
c=a|b;
Newsgroup: it.comp.lang.c
Titolo: Problema segmentation fault

Ho una funzione che da un vettore count_element[] di NUM_ELEM elementi, che 
rappresenta la cardinalita' dell'elemento i-simo, deve costruire un vettore
struttura (item_id,count,pointer) dei soli elementi che superano una certa
soglia data da get_count_limit(). Il codice va quando count_element ha pochi
elementi con tale caratteristica, mentre quando sono molti mi da errore 
di segmentation fault nella linea che ho segnato con (- RIGA INCRIMINATA -)
come se realloc non
funzionasse. Ma con la funzione xrealloc controllo che riesca la
riallocazione!
Qualcuno sa darmi una mano?
 
IL *  make_IL(item_t *freq){
item_t i;
long dim=0;
IL * p=NULL;
IL *tmp;
(*freq)=0;
int sz=sizeof(struct itemset_list);
dim=sz;
 for (i=0;i<get_NUM_ELEM();i++){
  if(count_element[i] >= get_count_limit()){
   p=(IL *)xrealloc(p,dim);
(- RIGA INCRIMINATA -)   (p)[dim-sz].item_id=i;
   (p)[dim-sz].count=count_element[i];
   (p)[dim-sz].pt=NULL;
   printf("%d\t%d\t\n",(p)[dim-sz].item_id, (p)[dim-sz].count );
   (*freq)++;
   dim+=sz;
  }
 }
return p;
}

 
Mi sembra tutto abbastanza confuso:
intanto p e' di tipo *IL, poi usi sz che e' il sizeof
del tipo struct itemset_list per muoverti dentro p ??
Poi non capisco perche' usi (p) invece di p.
Poi non capisco perche' hai una chiamata di funzione (get_NUM_EL())
nel test del for, che cosi' viene eseguita ad ogni ciclo.
Poi non capisco cosa fa la tua xrealloc: se si comporta come
la realloc, allora tu allochi dim bytes (e non dim items)
al puntatore (di tipo IL) p.
dopo di che accedi all'elemento dim-sz (!!) di p, che ovviamente
non esiste perche' gia' l'elemento p[1] non esiste:
insomma mi sembra che ci sia un po' di confusione
a proposito dell'accesso tramite puntatore, tramite array, e
a proposito dell'aritmetica dei puntatori.
In particolare, se vuoi accedere agli elementi successivi
di un array (o relativamnete ad un puntatore p) devi prendere
gli elementi p[0], p[1], p[2] e non p[0*sz] p[1*sz] p[2*sz] etc.
A meno che tu abbia fatto tutto giusto e che pero' allora non
ti sia spiegato abbastanza....
ciao,
g.

 
Che somaro che sono stato...e' che era da una vita che non usavo
il C e i puntatori...si vedono i risultati :)
Grazie ancora, ero totalmente fuori strada.
Dario
Newsgroup: it.comp.lang.c
Titolo: problemi con le liste

Ciao, sto implementando una funzione in C, la quale dati come
parametri una lista e un intero k>0, rimuove dalla lista i k-esimi
elementi (k,2k,3k,ecc...).questa è la struttura globale
struct M{
	int item;
	struct M *next;
};
typedef struct M nodo;
typedef nodo* pointer;
e questa la mia implementazione:
pointer eliminaognik(pointer L, int k)
{
int c=0;
pointer tmp,testa=L;
	if(k==1)
		while(L)
		{
			tmp=L;
			L=L->next;
			free(L);
		}
	if(k)
	{
		if(L)
		{
			tmp=L;
			L=L->next;
			free(tmp);
		}
		testa=L;
		c++;
		while(L)
		{
			if((c+1)%k==0)
				if(L->next)
				{
					tmp=L->next;
					L->next=L->next->next;
					free(tmp);
					c++;
				}
			L=L->next;
			c++;
		}
	}
	return testa;
}
Ora il problema è ke oltre qusta funzione, devo scrivere una
sottofunzione void eliminaOgniKRec(pointer *L, int h, int k); la quale
deve essere ricorsiva ed elimina ogni elemento k della funzione,
esclusi i primi h elementi della lista.
Qualcuno puo aiutarmi o darmi qualche dritta??

 Qualcuno puo aiutarmi o darmi qualche dritta??
Scusami per la franchezza ma, a occhio, direi che la funzione che hai
riportato sia scritta malino, sei sicuro che sia proprio corretta? Magari,
però, è più che altro una questione (importante) di semplicità del codice.
In ogni caso potresti implementare eliminaOgniKRec effettuando chiamate
ricorsive quando h>0 con parametri attuali L->next e h-1 mentre quando h=0
la soluzione dovrebbe essere quella che hai già scritto.
Forse non è proprio una soluzione perfetta ma è molto semplice e riutilizzi
il codice già scritto.
Spero di non averti confuso ulteriormente le idee.
Saluti
Giuseppe
Newsgroup: it.comp.lang.c
Titolo: esempi

salve a tutti,
perfavore ho bisogno di esempi sui programmi in C, esempi anche complicati,
tipo progetti veri e propri, ad esempio, organizzazione di una videoteca, di
una libreria, di un magazzino e roba del genere.
grazie
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 grazie
Esempi complicati in generale o solo gestionali? Cmq, ti consiglio di
farti un giretto su 
http://www.sourceforge.net/
 dove troverai i sorgenti
di migliaia di progetti piu` o meno complessi, piu` o meno maturi, scritti
nei piu` svariati linguaggi di programmazione, tra cui anche (e
ovviamente) il C.
Vuoi un progettino _veramente_ complicato? 
http://www.brlcad.org/
Circa 1 milione di righe di codice in C (principalmente) e Tcl/Tk. Un
simpatico progetto per un software di modellazione 3D orientato alla
progettazione e all'analisi dei veicoli da combattimento, sviluppato
dall'esercito degli USA e ora disponibile a tutti in licenza GNU GPL.
Un software _maturo_ iniziato nel 1979! 25 anni di storia, niente male!
Una curiosita`, Mike Muuss, fondatore del progetto e morto qualche
anno fa, e` il creatore del programma ping.
Saluti,
Marco Pallante
Newsgroup: it.comp.lang.c
Titolo: bind

qualcuno potrebbe darmi una descrizione del comando bind:
che cosa fa e a che cosa serve?
Grazie

che cosa fa e a che cosa serve?
Siamo OT perche' non e' una funzione standard C, ma la usi durante la
programmazione con i socket.
Puoi trovare maggiorni informazioni con una man bind (o se non hai un
man sottomano 
http://www.rt.com/man/bind.2.html
).
Una spiegazione dettagliata non te la saprei dare neanche volendo, ti
consiglio di spostarti su news://it.comp.os.linux.development e chiedi
li, dove troverai senz'altro spiegazoni migliori.
-- 
Mox



bind() e' una funzione diffusa sotto i sistemi Unix, che
serve ad legare ("to bind" per l'appunto) un nome a un
socket.  In ogni caso, bind() non fa parte dello standard
del linguaggio C, che e' cio' di cui si parla qui dentro,
percio' ti chiedo di spostarti su un gruppo specifico per la
programmazione per Unix/Linux, quale, per esempio,
it.comp.os.linux.development.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

Newsgroup: it.comp.lang.c
Titolo: Comandi per gestire la parallela

Vorrei sapere quali comandi usare in C (il compilatore č sotto Dos) per
poter andare a scrivere un byte (o un bit ..) su una porta fisica
(specificatamente la parallela (ind. 378)) e sapere quali sono i registri
della porta coinvolti.
Vorrei sapere anch quali sono i comandi da usare per poter andare a leggere
un byte sempre da porta fisica.
                                Grazie per la risposta.              Luca


Lo standard non prevede nessun comando per la porta parallela. Infatti
per il C qualunque periferica di I/O e' gestita tramite stream (in
poche parole come se fosse un file sul quale puoi leggere e/o
scrivere). In ogni caso molti compilatori mettono a disposizione delle
funzioni che permettono I/O diretto su porte fisiche, ti faccio alcuni
esempi:
TurboC: outport, inport, inportb, ...
Quick C: outp, inp, ...
DJGPP: outb, inb, outport, inp, ...
Come vedi i 3 compilatori piu' famosi sotto DOS non usano le stesse
funzioni degli altri, questo a riprova del fatto che queste funzioni
non sono standard. Quindi l'unica cosa da fare e' spulciare l'help in
linea.
Ciao, Obelix
-- 
Per rispondermi via e-mail togli .pippo
Newsgroup: it.comp.lang.c
Titolo: passare matrice a funzione

Salve,
ho la necessità di sapere come passare una matrice ad una funzione...
Come devo definire la lista dei parametri della funzione e con che sintassi
la devo chiamare dal main per passare una matrice?
Salve,
Alberto

 ho la necessitą di sapere come passare una matrice ad una funzione...
eg:
int main()
{
int a[3][3];
.....
funzione(a);
...
}
int funzione(int mat[3][3])
{
...
}
Ciao
-- 
none

 la devo chiamare dal main per passare una matrice?
Potresti passare un puntatore a puntatore e le dimensioni.
Oppure usare una struct del tipo
struct matrix_ {
	T* memory;
	int rows;
	int cols;
}
Chiaramente ti devi fare tutta la serie di funzioni per manipolare suddette
struct.
-- 
[ RiK0                                ]
[ non credo negli schemi non vincenti ]
[ two is an odd prime number          ]
Newsgroup: it.comp.lang.c
Titolo: Byte order and packets

Scusate se scrivo ancora ma succedono cose strane...
In breve io genero un pacchetto ipv6, setto gli header e lo mando come
raw packet a localhost
--8<---------------cut here---------------start------------->8---
ip6_hdr genIpv6Header(size_t payload_len) {
    ip6_hdr header;
    printf("payload len = %ld\n", payload_len);
    header.ip6_src = in6addr_loopback;
    header.ip6_dst = in6addr_loopback;
    header.ip6_ctlun.ip6_un1.ip6_un1_plen = 0xbeef;
    /* header->ip6_src = 0; */
    return header;
}
--8<---------------cut here---------------end--------------->8---
genero l'header così.
Quando sniffo però ottengo un'assurdo mescolamento nella lunghezza, tipo
--8<---------------cut here---------------start------------->8---
15:28:19.368203 IP6 truncated-ip6 - 60414 bytes missing!(class 0x01,
flowlabel 0xe63c1, hlim 0, next-header Options (0) payload length:
61374) ::1 > ::1: HBH (pad1)(pad1)(pad1)[trunc] HBH (pad1)(pad1)[trunc]
[|HBH]
--8<---------------cut here---------------end--------------->8---
Dove hex(61374) = '0xebfe'
che senso ha tutto ciò?
Può essere che il pacchetto non è corretto e quindi impazzisce o serve
altro?
Grazie...

 Grazie...
Ho pochissima esperienza di programmazione con i cocket, ma mi
sembra un problema di endianness. IIRC c'e' la funzione htonl()
che serve per scrivere i numeri nel pacchetto usando la
giusta sequenza di byte.
ciao
Giacomo

 Ho pochissima esperienza di programmazione con i cocket, ma mi
eh eh, ovviamente sono *S*ocket! :-)
ciao
Giacomo



I pacchetti in rete per *convenzione* sono trasmessi in big endian.
Esistono delle funzioni relativamente 'standard' per converire
i vari campi a 16/32bit dal formato nativo dell' host nel
formato di rete, vedi <netinet/in.h>:
uint32_t htonl(uint32_t hostlong)  -->  long, da host a network
uint16_t htons(uint16_t hostshort) -->  short, da host a network
uint32_t ntohl(uint32_t netlong)   -->  long, da network a host
uint16_t ntohs(uint16_t netshort)  -->  short,da network a host
Le funzioni ti permettono di manipolare i campi del protocollo
che obbligatoriamente devono avere il formato definito dallo
standard (big-endian per TCP/IP).
Invece i dati trasportati dal protocollo li puoi inviare come
vuoi, basta specificare l' endianness che usi!.
aa.
Newsgroup: it.comp.lang.c
Titolo: Cosa sono.............

Le template e i namespace?
Mi potete indicare qualche sito in italiano dove studiarmeli?
--
Danilo Cividin
E-Mail 
dciv...@tiscalinet.it

Le template e i namespace?
Caratteristiche del C++, non del C.
I template sono dei modelli di classe parametrizzati.
I namespace sono dei "contenitori di nomi" tali da renderli univoci.
Usa it.comp.lang.c++ per questo genere di domande.

Ciao e grazie.
E' che conosco solo il C ed č da molti anni che non ci lavoro piů.
Grazie e scusate se ho abusato, pensavo che fosse collegato C e C++, ma vedo
che ho pensato male.
Grazie comunque della cortesia.

 Le template e i namespace?
Dovresti chiederlo su it.comp.lang.c++.
Bye,
 Emmanuele.
-- 
Emmanuele Bassi         |             [ 
http://digilander.iol.it/ebassi/
 ]
emmanue...@iol.it
  |
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

Ok ma di quelli ce ne fosse uno che mi dice almeno un link dove posso andare
a studiarmi questi argomenti?
Tu conosci qualche link che li spiega?
Ciao, grazie e scusate ancora del disturbo.

 Tu conosci qualche link che li spiega?
Saro' un cavernicolo, ma nonostante io viva in mezzo ai computer credo
ancora che il miglior modo per imparare sia leggersi un libro. I tutorial
online spesso sono carenti e a volte contengono errori.
Se non vuoi spendere (sei fortunato in questo caso), per il C++ (e quindi
templates e namespaces) ci sono online, gratis, gli ottimi libri di
BruceEckel su 
www.bruceeckel.com
 (thinking in C++).
Non sono links di tutor gratuiti o altre cosine, sono veri e propri libri
realmente pubblicati da case editrici, vedrai che li troverai un po' piu'
completi !!!
Alex

Preferisco pure io leggere un libro, anche perché è più facile da leggere e
più versatile di una pagina Internet.
E' solo che su tre libri, ce ne fosse uno che tratti questi deu argomenti.
Io ho Visual C++ 5.0 della McGrow Hill
         Borland C++ 4.0 della McGrow Hill
         Visual C++ 6.0 Apogeo
O è colpa mia che cerco in libri scritti in italiano i termini Template e
Namespace o questi libri sono una sola.
Hai da suggerirmi qualche buon libro?
Ciao e grazie mille.

 ha scritto nel messaggio
news:9f4r97$4hno$1...@stargate1.inet.it...

Hai comprato libri specifici di compilatori e non di linguaggio. La
trattazione del linguaggio e' spesso minima o addirittura assente !! Va bene
qualsiasi libro che tratti C++ standard (per nessun compilatore in
specifico): le API e le MFC te le puoi imparare dopo con il Petzold ed il
Prosise.
Ti consiglio Thinking in C++ gratis su internet ma in inglese.
Se vuoi un OTTIMO libro in italiano, compra quello di Lipman (titolo
originale C++ Primer). Fai un po' di ricerca...
Alex

Grazie mille.

Hai da suggerirmi qualche buon libro?
il Kernighan/Ritchie se vuoi imparare il C. Lo Stroustrup o il Lippman
se vuoi imparare il c++
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
Newsgroup: it.comp.lang.c
Titolo: Lettura stream socket

Salve a tutti,
ho un problema su cui lavoro da giorni che non riesco a risolvere, per
qualcuno sarà banale, ma non sono riuscito in nessun modo a venirne a
capo. Ho due macchine (s.o. Mandrake 9.2), un client ed un server
(connessione effettuata in localhost), ho un archivio sul server che
voglio interrogare (file .txt - ogni riga composta da dati
intervallati da un punto e virgola es. "1;88-0605-386-6;Il linguaggio
C;Les Hancock;1986"). Riesco a connettere il client al server ed a
richiedere una stringa (linea di testo come sopra) fino a fine file.
Ho definito un vettore di lunghezza massima 110 come buffer su cui
viene scaricato lo stream.
Il problema è che a volte viene caricata sul buffer una solo linea,
altre più di una linea fino riempire completamente il buffer
nonostante il fine stringa '\0' che viene inserito in automatico da
fgets() sul server in lettura del file, ecc...forse è più chiaro se
posto il codice
Lato server sembra funzionare tutto alla perfezione!
Lato client sembra esserci il problema....
...
...
struct libro lib[10]; /*si dichiara la variabile lib di tipo libro
come array*/
char c_recup_lib[ILEN_REC];	// buffer, contiene la risposta del server
char *app_soc_stream;	/* definisco un punt.di appoggio per la stringa
ricev sul socket */
int byte_rec, i_len_app, i, i_appo_size, k;
byte_rec = i_len_app = i_appo_size = 0;
	for (k=0;k<=IMAX_REC;k++){		// riceve max 10 send come il numero dei
record
//	c_recup_lib[0]='\0';			// inizializzo buffer come stringa vuota
	app_soc_stream = &c_recup_lib[0];	/* assegno l'ind. al punt. al
buffer */
	if ((byte_rec = recv(sock_num, c_recup_lib, sizeof(c_recup_lib),0))
!= 0){
		printf("c_recup_lib appena arrivato vale: %s\n", c_recup_lib);
			int kk;
			for (kk=0;kk<byte_rec;kk++){
			printf("lettera arrivata....%d,
%c\n",c_recup_lib[kk],c_recup_lib[kk]);
........
.....
in questo caso a volte funziona bene e a volte no
oppure come sopra con la modifica che segue
.....
char *app_soc_stream;	/* definisco un punt.di appoggio per la stringa
ricev sul socket */
......
app_soc_stream = &c_recup_lib[0];	/* assegno l'ind. al punt. al buffer
*/
......
if ((byte_rec = recv(sock_num, app_soc_stream , sizeof(app_soc_stream
),0)) != 0){
.....
in questo caso legge sempre scandisce la stringa 4 caratteri alla
volta e poi si blocca.
Il problema sembrerebbe causato da sizeof(), nel primo esempio a volte
legge bene la lunghezza della stringa terminata, a volte invce riempie
completamente il buffer; nel secondo caso penso di aver sbagliato
qualcosa...
Qualcuno mi può dare una dritta?
Grazie 
GiP

 legge bene la lunghezza della stringa terminata,
'sizeof' non serve per leggere la lunghezza delle stringhe.
Max

...

Si č vero, strlen (che tra l'altro ho provato), restituisce la
lunghezza di una stringa, sizeof restituisce la dimensione
dell'operando espressa in byte, non ho cmq risolto il problema!
Grazie per la precisazione, gradirei un aiutino in piů.
GiP
Newsgroup: it.comp.lang.c
Titolo: struct: come si legge?

Ciao a tutti,
Qualcuno può dirmi come si interpreta una cosa del genere?
Cosa indicano quei ": 1", ": 3" ... dopo ogni membro?
Grazie
--- (tratto da GtkWindow.h - Gtk+)
struct GtkWindow
{
...
guint allow_shrink : 1;
...
guint need_default_position : 1;
guint need_default_size : 1;
guint position : 3;
guint type : 4; /* GtkWindowType */
guint has_user_ref_count : 1;
guint has_focus : 1;
guint modal : 1;
guint destroy_with_parent : 1;
guint has_frame : 1;
/* gtk_window_iconify() called before realization */
guint iconify_initially : 1;
guint stick_initially : 1;
guint maximize_initially : 1;
guint decorated : 1;
guint type_hint : 3; /* GdkWindowTypeHint */
guint gravity : 5; /* GdkGravity */
...
};

Cosa indicano quei ": 1", ": 3" ... dopo ogni membro?
Sono bit-field, in sostanza a quei campi vengono
allocati solo alcuni bit presi da degli interi.
Nota che *quali* bit vengono allocati e' una
decisione arbitraria del compilatore.
HTH
Andrea

 decisione arbitraria del compilatore.
umh... ma hanno solo una valenza di documentazione (e possono essere
tralasciati) o indicano qualcosa di importante al compilatore?
Chiedo questo perchè vorrei tradurre la struttura in altro linguaggio.
Ciao, grazie

 Chiedo questo perchè vorrei tradurre la struttura in altro linguaggio.
i bitfield non dovrebbero rappresentare il max in fatto di portabilità
(specie in un contesto embedded di interfacciamento con l'hardware);
ti suggerisco caldamente di fare un po di prove in C per vedere come si
comporta il compilatore (quali bit riempie e quali no) magari utilizzando
una union oppure con qlc cast "sporco" da pnt struttura bitfield a pnt
intero;
ciao

tralasciati) o indicano qualcosa di importante al compilatore?
Influenzano il codice generato... i bitfield rappresentano
un sistema per ottimizzare lo *spazio* occupato da campi di
struttura. Se togli gli indicatori di larghezza in bit c'e'
una qualche remota possibilita' che il programma funzioni
comunque (con le strutture che pero' diventano piu' grandi).
Supponi di avere in una struttura un colore (0..15), un
indicatore di sottolineatura carattere (0..3) e un flag di
testo lampeggiante. Facendo
   typedef struct STILE_CARATTERE
   {
     int color;
     int underline;
     int flashing;
   } StileCarattere;
la struttura occupa un minimo di 3 interi... facendo invece
   typedef struct STILE_CARATTERE
   {
     int color      : 4; /* 0..15 = 4 bit */
     int underline  : 2; /* 0..3  = 2 bit */
     int flashing   : 1; /* flag on-off = 1 bit */
   } StileCarattere;
ci sono buone probabilita' che la struttura occupi lo
spazio di un solo intero.
HTH
Andrea
Newsgroup: it.comp.lang.c
Titolo: puntatori di secondo livello

Ciao a tutti,
non capisco se ho ben capito ^_^
int *a;
int *b;
int **c;
int g;
g = 4;
a = &g;                        /* assegno ad a l'indirizzo della  variabile
g */
b= a;                            /* assegno al pointer b l' indirizzo di a:
cioe' se a si trova nella locazione 65512 ora b puntera' a 65512 */
c = &a;                        /* assegno al pointer di secondo livello
l'indirizzo 65512. Stavolta devo usare & per eguagliare il livello del
pointer.
                                        Cerco di spiegarmi meglio: c e' un
puntatore ad un puntatore. (infatti punta ad a, che ha un indirizzo e
contiene un indirizzo,
                                        ma gli assegno l'indirizzo del
puntatore e non del suo contenuto (che sarebbe l'indirizzo di g)). Non posso
                                        scrivere c = a oppure c = b ma sono
costretto ad utilizzare la forma c = &a; oppure c = &b; perche in verita'
                                        scrivendo &a oppure &b sto'
indicando un indirizzo a livello due e non a livello uno */
Vi prego di smontare attentamente il tutto ed essere particolarmente pignoli
nel commentare.
Grazie mille!
    Leonardo

 cioe' se a si trova nella locazione 65512 ora b puntera' a 65512 */
Sbagliato.  
Assegni a b il *contenuto* di a.
L'indirizzo di a e' &a.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


cioe' con la scrittura
b = a;
e' equivalente a
b ==4; ???
oppure
b = *a; ???

 b = *a; ???
no, così non si ha senso, perchè assegni ad un puntatore il valore a cui
punta a...
ciao, assa.

 b = *a; ???
Non ci siamo: se a e b fossero due interi:
int a;
int b;
a = 5;
b = 3;
con l'assegnazione:
b = a;
Copierei il valore di a in b.
b, adesso, conterrebbe 5.
Il discorso e' analogo per i puntatori.
Se hai :
T a;
T b;
cioe' a e b di un tipo T qualsiasi, qualsiasi assegnazione:
b = a;
copia il valore di a in b.
Ora, sostituisci, al posto di T, il tipo puntatore a intero:
int* a;
int* b;
int c = 3;
a = &c; /* a contiene l'indirizzo di c */
Con l'assegnazione:
b = a; 
Copi il valore di a in b e quindi b conterra', a sua volta,
l'indirizzo di c.

Newsgroup: it.comp.lang.c
Titolo: Chiamata a una funzione

Salve a tutti, ho fatto questo programma con le funzioni a scuola, ma mi č
sorto un dubbio: come posso fare per chiamare la funzione inserimento oppure
un'altra funzione piů di una volta?
#include<stdio.h>
#include<conio.h>
#define EURO 1936.27
void inserimento(float x[2][2]);
void lettura(float x[2][2],int a);
void totali(float x[2][2],int a);
void conversione(float x[2][2]);
void main(){
 float mat[2][2];
 int g;
 printf("Modifica valori in LIRE/EURO\n\n");
 inserimento(mat);
 g=0;//Lettura in LIRE
 lettura(mat,g);
 totali(mat,g);
 conversione(mat);
 g=1;//Lettura in EURO
 lettura(mat,g);
 totali(mat,g);
 printf("\n\n----->>>>>FINE PROGRAMMA<<<<<-----");
 getch();
 getch();
}
void inserimento(float x[2][2]){
 int i,j;
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   printf("Inserire i valori in lire: ");
   scanf("%f",&x[i][j]);
  }
 }
 printf("Fine Inserimento!!!\n\n");
}
void lettura(float x[2][2],int a){
 int i,j;
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   if(a==0)
    printf("Valore array[%d][%d]=Lire %.0f\n",i,j,x[i][j]);
   else
    printf("Valore array [%d][%d]=EURO %.2f\n",i,j,x[i][j]);
  }
 }
 printf("Fine Lettura!!!\n\n");
}
void totali(float x[2][2],int a){
 float somma;
 int i,j;
 somma=0;
 for(i=0;i<2;i++){
  for(j=0;j<2;j++){
   somma=somma+x[i][j];
  }
 }
 if(a==0)
  printf("Totale in Lire= %.0f",somma);
 else
  printf("Totale in Euro= %.2f",somma);
}
void conversione(float x[2][2]){
int i,j;
for(i=0;i<2;i++){
 for(j=0;j<2;j++){
  x[i][j]=x[i][j]/EURO;
 }
}
printf("\n\nCONVERSIONE EFFETTUATA!!!\n\n");
}

 un'altra funzione più di una volta?



void inizializza(float x[2][2]);
int main(){
 float mat[2][2]={0};
 int g;
 char car,continua;
 do
 {
 inizializza(mat);
 printf("Modifica valori in LIRE/EURO\n\n");
 inserimento(mat);
 g=0;//Lettura in LIRE
 lettura(mat,g);
 totali(mat,g);
 conversione(mat);
 g=1;//Lettura in EURO
 lettura(mat,g);
 totali(mat,g);
 printf("\n vuoi continuare s/n : ");
 scanf("\n%c",&continua);
 continua=toupper(continua);
 }while(continua!='N');
 printf("\n\n----->>>>>FINE PROGRAMMA<<<<<-----\n");
 scanf("\n%c",&car);
 return 0;
}




void inizializza(float x[2][2])
{
int i,j;
for(i=0;i<2;i++)
 for(j=0;j<2;j++)
 x[i][j]=0;
}
Newsgroup: it.comp.lang.c
Titolo: puntatori e memoria ( domande principiante)

Ho visto che posso utilizzare i puntatori senza allocare in precedenza
memoria con malloc o calloc. Qual è la differenza?
Forse nel primo caso la memoria può essere  riallocata per altri
scopi?
Eppure la prima modalità è utilizzata frequentemente nel caso di
puntatori a carattere. Per esempio nel Kernighan.
void strcpy(char *s, char *t)
{
    while (*s++=*t++);
}
E se per esempio s è più corta di t vengono impiegate nuove locazioni
di memoria.
Ringrazio fin da adesso quanti risponderanno.
   Ciao,
      Giovanni. 
Giovanni Neglia
gne...@ZZZtiscalinet.it
per rispondere rimuovere ZZZ dall'indirizzo

 di memoria.
Niente affatto! Se s è più corta di t avrai un bel guaio in esecuzione.
EMG

 memoria con malloc o calloc. Qual è la differenza?
L'unica differenza tra malloc e calloc e' che usando la prima la
memoria viene allocata ma non inizializzata, mentre usando la seconda
la memoria viene riempita di zeri.
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it

indispensabile allocare memoria.
Non e' esattamente cosi'.
I puntatori sono delle variabili che, semplicemente, *puntano* e
l'operazione di "puntamento" e' indipendente dall'allocazione della
memoria.
Ad esempio, si puo' scrivere :
char *p = "Enrico Maria Giordano" ;
char *t = p ;
while ( *t++ )
      ;
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
--------------------------------------------------------------
"Partire e' un po' morire e morire e' partire un po' troppo !"
--------------------------------------------------------------

Newsgroup: it.comp.lang.c
Titolo: dividere una stringa

come faccio a dividere una stringa in altre stringhe ogni volta che incontro
un certo carattere?
esempio
io ho:
string base="parola1/parola2/parola3/";
string w1, w2, w3;
e voglio ottenere:
w1="parola1";
w2="parola2";
w3="parola3";
grazie, ciao

 un certo carattere?
La funzione strtok() fa proprio quello che ti serve,
basta che gli passi la stringa e il carattere separatore
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  |
+-----------------------------------------------------------+
Newsgroup: it.comp.lang.c
Titolo: Cancellare carattere

Salve a tutti , mi sapete dire come fare per cancellare
un carattere o un numero presente in un file letto
con fscanf sostituirlo con uno spazio .
Grazie
Ciao

con fscanf sostituirlo con uno spazio .
Per facilita' usa il file aperto in lettura e scrittura.
Chiama fseek per spostarti nel punto in cui vuoi sovrascrivere il
carattere con lo spazio, quindi usa una funzione di scrittura a
tua scelta.

... ti ringrazio .
Ciao

 ha scritto nel messaggio
news:fjike2h281htkhgi6...@4ax.com...

Non funziona in modo portabile se il file è aperto in modo testo, come
suppongo che sia visto che si usa fscanf.
Del resto usare fscanf per stream binari non mi sembra
molto ortodosso.
Per esempio ci potrebbero essere problemi con
il mapping END_OF_LINE <--> '\n' ecc.
Dopo una write effettuata su uno stream di testo, è dipendente
dall'implementazione se il file associato viene troncato oppure no
nel punto successivo alla write stessa.
Per risolvere il problema bisogna
passare in modalità binaria ed utilizzare fwrite/fread
invece di fprintf/fscanf.
Passando naturalmente per le funzioni fseek/ftell.
Naturalmente diventa più difficile la lettura dei dati
che vanno formattati senza l'ausilio della funzione
di libreria fscanf.
--
Giorgio Silvestri
DSP/Embedded/Real Time OS   Software Engineer


Abbastanza difficile se letto con fscanf() perche` si perde la 
formattazione (o la posizione relativa del carattere da rimpiazzare).
Possibile usando le funzioni fgets() e fputs(), anche se su file di 
testo occorre usare ftell()/fseek() per renderlo portabile.
Piu` facile e` se ogni carattere viene letto/scritto singolarmente con 
fgetc()/fputc().
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 fgetc()/fputc().
Non è un problema tanto di formattazione, recuperabile in qualche
modo, quanto di modalità dello stream.
Esso "deve" essere binario per avere la garanzia che funzioni.
Dalla documentazione Standard:
"C99. 7.19.3 p2
Binary files are not trucated, except as defined in 7.19.5.3. Whether a
write on a text
stream causes the associated file to be trucated beyond that point is
implementation defined."
7.19.5.3 è relativo ai troncamenti fatti da fopen e non è pertinente al
nostro problema.


 
Venti anni che lavoro col C su varie piattaforme e mai ho visto un file 
troncato da una write anche se esisteva una frase simile sul vecchio 
standard.   C'e` sempre spazio per imparare :-)


if ((inputFile = fopen("input.txt", "r")) != NULL)
		{
				if ((outputFile = fopen("output.txt", "w+")) != NULL)
				{
						while((fgets(stringPtr, sizeof(char *), inputFile)))
						{
								for (i = 0; string[i] != 0; i++)
								{
										if ((string[i]) == '\t')
											string[i] = ' ';
									fputc(string[i], outputFile);
								}
						}
				}
Dk30 ha scritto:


 >

Newsgroup: it.comp.lang.c
Titolo: funzioni a numero parametri variabile?

vorrei inserire in un programma una funzione che permetta di ricevere
in ingresso un numero indfinito di variabili (al massimo cinquanta).
Devo sfruttare l'overload di funzioni e scrivere cinquanta funzioni con
un numero di variabili di ingresso diverso? Oppure esiste qualche altro
stratagemma?

un numero di variabili di ingresso diverso? 
stdarg.h
http://www.google.it/search?hl=it&q=stdarg.h&btnG=Cerca+con+Google&meta=

Newsgroup: it.comp.lang.c
Titolo: Aiuto su funzione stringhe...

Salve a tutti,
devo scrivere una funzione ricorsiva, che prea una stringa,
sostituisce tutte le occorrenze di una carattere con un altro, e mi
ridà la stringa in output.
il prototipo è: char *NomeFunc( char *s).
So che non è difficile, ma non riesco a far funzionare la
sostituizione!!!!
Aiuto please!!!!!


/**
*	Funzione ricorsiva per sostiture un X con Y all'interno di una
stringa
*/
char *substStr(char *s)
{
	if (strlen(s)==0)
		return s;
	else {
		s[0] = (s[0]=='X')?'Y':s[0];
		s = substStr(++s);
	}
}
spero sia questo che volevi, non ti sei spiegato un granchè bene...
g4b0


In pratica, data una stringa in input, devo sostituire tutte le "a"con
accento acuto o grave, con "a" minuscolo.....
e ridare la stringa in output....


Be, la modifica da fare al sorgente che ti ho dato mi sembra banale,
allora... Cambi X con à, Y con a, e ricopi l'istruzione per tutte le
sostituzioni che devi fare. Per il resto fa già ciò che deve, no?
g4b0

 - Mostra testo tra virgolette -
Certo......ottimo!!!!Ti ringrazio!!!!

Newsgroup: it.comp.lang.c
Titolo: interi su socket

Salve, desideravo sapere se è possibile spedire degl'interi sui socket o
sono limitato solo ai caratteri.
Grazie

 Grazie
Manda la stringa e poi converti con atoi()
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Manda la stringa e poi converti con atoi()
Mah... io farei diversamente... manderei i 4 char che rappresentano
l'intero... basta fare un cast... ti faccio un esempio (che non ho
provato e potrebbe dare dei warning)
int ret, my_int = 723;
ret = send(sock, (char *) &my_int, sizeof(my_int), 0);
uguale a (linux):
ret = write(sock, (char *) &my_int, sizeof(my_int));
Simon.
Newsgroup: it.comp.lang.c
Titolo: numerone

Salve a tutta la ML,
ho un problema numerico....Devo acquisire da file dei numeri con valori che 
arrivano sino alle 12 cifre e possono essere anche negativi e poi eseguire 
delle operazioni matematiche elementari (+,-,*,/), che tipo di struttura 
posso usare? inoltre vorrei acquisirli tramite scanf , ma non so che 
parametro passare vicino al valore percentuale.
Qualcuno puņ aiutarmi?
Mauro 


Forse io :)
I Double hanno un range di circa +-10^-308 +-10^308 e per tanto hanno 15
cifre significative, quindi dovresti usare %ld nelle tue scanf...
Ci possono essere dei problemi con gli arrotondamenti ma non credo che nel
tuo caso lo sia

 tuo caso lo sia
Io credo di si...
Se usa VC++ puo' usare :
__int64
che ovviamente pero' non e' portabile.
Altrimenti esistono varie librerie piu' o meno portabili per numeri a 64
bits, 128 bits ed a precisione arbitraria.
Beh, se hai VC++ ecco fino a che numero puoi ottenere con __int64:
<CODE>
__int64 n;
n = ~0i64 - (1i64<<63);
printf("limite massimo: %I64d\n",n);
n = 0 | (1i64<<63);
printf("limite minimo : %I64d\n",n);
</CODE>
<OUTPUT>
limite massimo: 9223372036854775807
limite minimo : -9223372036854775808
</OUTPUT>
Come vedi hanno 19 cifre, ed, come noto, sono:
+ 2^63-1 e - 2^63
Usando unsigned __in64 puoi arrivare fino a 2^64-1, ovvero:
18446744073709551615
Se non hai accesso a questo tipo di dato guardati il seguente sito:
http://www.swox.com/gmp/
Tommy

 che ovviamente pero' non e' portabile.
Esiste (C99) long long int che e` grande almeno 64bit, oppure il typedef
(se possibile) int64_t.
Luca
-- 
Home: 
http://kronoz.cjb.net
This message will self destruct in 5 seconds.

 Qualcuno può aiutarmi?
Esiste una libreria apposita rilasciata come GPL...
si chiama libgmp e serve proprio per effettuare calcoli enormi e 
crittografici.
Se ti interessa l'ho già creata con cygwin in libreria dinamicaaa (*.dll) 

 che ovviamente pero' non e' portabile.
__int64 non sara` standard ma lo interpretano quasi tutti e in alternativa
c'e` long long... quindi e` evvidente che in questi casi e` ancora piu`
semplice
In realta` sto ricevendo informazioni contrastanti qualcuno qui mi dice che
e` standard...
Dove posso controllare cosa dice C99? C'e` qualcosa in rete?

 Dove posso controllare cosa dice C99? C'e` qualcosa in rete?
Long long e' standard, ma non in C89, solo in C99. Io,sbadato, me ne ero
dimenticato...
Tommy
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 (se possibile) int64_t.
Ovvio, che sbadato, me ne ero dimenticato.
(putroppo non ho ancora avuto molto a che fare con il C99).

Newsgroup: it.comp.lang.c
Titolo: Come far saltare n righe di intestazione di un file di testo??

Salve a tutti!
                            Lo so che ne avevamo già parlato ma proprio lo
fscanf non mi dà soddisfazione!
Devo far saltare ad una routine di lettura dati da un file di testo le prime
n righe che devo riservare per l'intestazione.
Siccome i dati da leggere sono numeri, la fscanf  è utilizzata all'interno
di un ciclo for che mi permette di leggere una riga alla volta e riempire
una matrice fatta ad hoc.
Come potrei però utilizzarla per far saltare le prime n righe???
Avevo pensato di aprire il file in questione con l'opzione "a+" per fare
l'append in lettura ma non ne vengo fuori e così sono dovuto ritornare sui
miei passi: "r"..
C'è un metodo + veloce e sicuro?
Ogni consiglio è gradito....

Siccome i dati da leggere sono numeri, la fscanf  è utilizzata all'interno
Usa fgets e fai prima (ti legge una riga alla volta)
ciao

 Ogni consiglio č gradito....
Leggi le righe con fgets()
se sono di intestazione dai un continue
se sono di dati, separi i dati con scanf()
HTH gfb

Newsgroup: it.comp.lang.c
Titolo: Puntatore di frame dello stack

Salve,
sono un neofita del C e dunque abbiate pazienza. Cercando di comprendere
le modalita' di gestione della memoria quando una funzione C viene
invocata, ho delle difficolta' a capire a cosa serve realmente il
puntatore di frame dello stack (SFP) interposto tra l'area di indirizzo
di ritorno ed il buffer. Colgo l'occasione per chiedere anche cosa
rappresenti il valore EBP che dovrebbe essere quello che viene copiato
nell'SFP quando la funzione viene invocata.
Spero di essere stato chiaro non essendo chiaro per me il tutto.
Grazie.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 puntatore di frame dello stack (SFP)
E chi ti assicura ci sia uno stack a cui puntare? Il C no di certo.
Se ti interessano le convenzioni di chiamata leggi l'ABI dell'architettura.
Per IA32 
http://www.sco.com/developers/devspecs/abi386-4.pdf
-- 
Legrandin

 Per IA32 
http://www.sco.com/developers/devspecs/abi386-4.pdf
Grazie.


 exit(0);
Embe'? Secondo il C standard, big_stream e buffer possono
essere anche nn allocati sullo stack (sempre ci sia uno stack).
Dipende dall'architettura.
-- 
Legrandin

 Dipende dall'architettura.
Forse non hai ben compreso il primo messaggio. Sono un neofita del C. 
Cortesemente poiche' mi sembra di capire che ne sai molto spiegami
secondo il C standard in quali casi big_stream e buffer possono
essere o non essere allegati facendomi appunto riferimento alle 
varie architetture possibili.
Ti ringrazio.

Newsgroup: it.comp.lang.c
Titolo: come si accede ai singoli bit di una variabile?

Esiste un modo per accedere ai singoli bit di una variabile?
si può leggere e modificare un bit specifico di una certa variabile?
ad esempio
int x=1;    e sia 00000001 la rappresentazione dei bit di x....
posso ad esempio cambiare il 3° bit in 1?
e se si posso farlo per qualsiasi tipo di variabile, anche float per
esempio?
Grazie

 esempio?
Si, ma ha senzo se sai quello che fai ... ad esempio dunque:
float var;
*((int*)&var)=(*((int*)&var))|0x04;
Mette ad uno il bit numero 3 della variabile float var ... il valore che poi
la variabile float assume dipende ovviamente dal fatto che questa viene
interpretata come folating point e tu devi sapere come viene gestira se vuoi
modificarne i bit!!
Faccio notare che l'intero *((int*)&var) è composto da:
&var            =  Puntatore a float che punta alla variabile float var
(int*)&var    = Puntatore ad intero che punta alla variabile float var
*((int*)&var)= Intero puntato dal puntatore di cui sopra!
Eccoti un esempio completo:
#include<stdio.h>
int main(void){
    float var=12.34E+11;
    if(sizeof(var)!=sizeof(int)){
            printf("Attenzione %d != %d \n",sizeof(var),sizeof(int));
    }else{
            printf("Prima: var=%.6g &var=%x &int=%x int=%x \n",
                var,&var,(int*)&var,*((int*)&var));
            *((int*)&var)=(*((int*)&var))|0x0100;
            printf("Dopo: var=%.6g &var=%x &int=%x int=%x \n",
                var,&var,(int*)&var,*((int*)&var));
    }
    return 1;
}
Ciao
Alessio Carlini

Grazie

bit(0 o 1) di n; 
non direi;
 forse j=((1<<i)==n & (1<<i))

...

Ciao
dipende un po' da cosa ci vuoi fare. Un modo per farlo è quello di
definire una struttura di campi di bit e una union. Forse è meglio se
ti faccio un esempio (che vale per i char ma può essere modificato per
tutti gli altri tipi)
typedef struct TagBitField {
	unsigned int b1:1;
	unsigned int b2:1;
	unsigned int b3:1;
	unsigned int b4:1;
	unsigned int b5:1;
	unsigned int b6:1;
	unsigned int b7:1;
	unsigned int b8:1;
}BitField;
typedef union {
	char c;
	BitField b;
}Carattere;
int main(int argc, char* argv[])
{
	Carattere car;
	car.c =5; //scrive nel tipo carattere
	car.b.b2 =1; //modifica il secondo bit verso il meno significativo
        //ora in car.c c'è scritto 7
	return 0;
}
Un saluto
laura



#define bit(n,i,j) \
   (j)= (1L<<(i))==( (n) & (1L<<(i)) ) ? 1: 0
Newsgroup: it.comp.lang.c
Titolo: ALGORITMO DI OTTIMIZZAZIONE FUNZIONI NON LINEARI (QUADRATICHE)

Sono uno studente di ing della Sapienza di Roma (ing. elettronica).Sto
preparando l'esame di ricerca operativa ;devo realizzare una
tesina sulle reti neurali e per addestrare la rete devo adoperare algoritmo
di ottimizzazione che mi  minimizzi l'errore medio quadrato fra uscite
effettive e uscite desiderate. Sto cercando DISPERATAMENTE degli algoritmi
appositi
di ottimizzazione scritti in C/C++ vorrei sapere se qualcuno ne sa
qualcosa( in particolare se sono disponibili le librerie NAG in C). Grazie
Valerio DM:   
aquil...@global-italianet.it


Le NAG purtroppo te le scordi perche' sono commerciali e solo in formato
binario -> cioe' niente sorgenti
Per gli algoritmi numerici puoi fare delle ricerche per 'Numerical
Recipes' e' un libro con molti algoritmi di cui esiste la versione C e
Fortran oppure provi a cercare dentro NetLib al seguente URL:
http://ftp.cised.unina.it/pub/netlib/
 
e' una raccolta di programmi e librerie numeriche
Marco

Newsgroup: it.comp.lang.c
Titolo: Algoritmo Proporzionale Integrale in C

Scusate la confusione PI sta per proporzionale integrale e non per pi-grego,
l'algorimo mi occorre per controllare e gestire un pressione!

 
Ohps...scusami tu...tra l'altro i PID facevano parte del programma di 
sistemi automatici elettronici all'istituto tecnico in cui ho frequentato 
le scuole superiori...che ignoranza!
Prova qua, ho visto che c'e` della buona documentazione da cui prendere 
spunto:
http://www.etec.polimi.it/IND32/It/AzionamentiElettrici/Materiale/pi.pdf
Ale
Inviato da 
www.mynewsgate.net

Grazie per l'indirizzo!
Marco

Newsgroup: it.comp.lang.c
Titolo: Cerco programmatore esperto

Cerco programmatore che è in grado di realizzare una procedura in qualsiasi
linguaggio per facilitare l'inserimento di annunci nei vari mercatini della
rete.
Una volta inseriti i vari campi dell'annuncio: ( Testo, E-mail, Rubrica,
Titolo Annuncio, Telefono, Citta, Cognome e Nome, Indirizzo ), la procedura
deve esportare tali campi nei vari form dei mercatini che si visitano con
Explorer o netscape.
In pratica visitando un form di inserimento annunci di un mercatino, si
preme un bottone, ed i campi precedentemente inseriti, vengono esportati nel
form di quel mercatino e l'annuncio viene inserito.
Se si può automatizzare ancora di più la procedura tanto meglio.
Si prega di comunicare la fattibilità della procedura ed i costi.
Per contatti utilizzare la mia E-mail che ricordo è protetta contro lo Spam.
Per rispondere eliminare la dicitura ( NOSPAM ).

 
sei OT.
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG
Newsgroup: it.comp.lang.c
Titolo: Che differenza c'è tra una coda statica circolare e una coda statica lineare?

Grazie
-- 
Posted from 
natmi130.etnoteam.it
 [194.185.248.130] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie
Per statico si intende qualcosa che viene allocato sullo stack al momento
della compilazione, per cui una struttura dati statica avrà una dimensione
che non può essere variata a run time. Per rappresentare una coda statica in
genere si usa un array; in entrambi i casi si usano due indici per indicare
dove immettere e da dove estrarre gli elementi. All'inizio i due indici
saranno uguali, il che indica che la coda è vuota (supponiamo che siano
entrambi uguali all'indice dell'ultimo elemento dell'array); mano a mano che
vengono inseriti elementi l'indice di inserimento si sposterà verso
l'elemento di indice 0, e lo stesso farà l'indice di estrazione quando un
elemento viene estratto. Nel caso di coda lineare, quando l'indice di
inserimento arriva allo 0 e la coda non è piena, è necessario riorganizzare
il vettore shiftando gli elementi verso indici più alti. La coda circolare
invece sfrutta uno stratagemma: se l'indice di inserimento arriva a 0,
questo viene spostato all'indice dell'ultimo elemento (con l'operatore '%'),
per cui non sarà necessario riorganizzare il vettore. Nota che per la coda
lineare l'indice di inserimento sarà sempre <= dell'indice di estrazione
(uguali se la coda è vuota), mentre questa condizione non è vera per la coda
circolare.
Spero di essere stato abbastanza chiaro.
Ciao,
Cecco