mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Allocazione ed utilizzo vettori in funzioni .........

Ho alcuni vettori che dichiaro nel main ed alloco in una funzione. Essendo
più di uno non posso restituirlo con return quindi devo "passarli" per
riferimento.
Tuttavia quando li utilizzo (specie in una fscanf()) la scrittura risulta un
po' intricata, ma funziona.
Vorrei sapere se esiste un modo migliore o più elegante.
Grazie.
P.S.: i "punti" nel codice indica che ci sono altre righe che ho omesso.
int readDataIN(FILE *file, int *m, int *n, int **lit, int **headc, int **w){
    .
    .
    .
  int numlit; /* numero totale letterali */
    .
    .
    .
  (*lit)    = (int*)calloc(10000, sizeof(int));
    .
    .
    .
   fscanf(file, "%d", &((*lit)[numlit]));
    .
    .
   return 0;
}
Nel main:
dichiaro:
  int *lit;
ed invoco la funzione:
  readDataIN(InFile, &m, &n, &lit, &headc, &w);

 Vorrei sapere se esiste un modo migliore o più elegante.
Un modo potrebbe essere quello di far ritornare un array di array.
Un altro per pulire il codice puo` essere questo:
int * tmp_lit;
int * tmp_headc;
int * tmp_w;
tmp_lit = (* lit);
tmp_headc = (* headc);
tmp_w = (* w);
.
:
tmp_lit = calloc(10000, sizeof(int));
.
:
fscanf(file, "%d", &tmp_lit[numlit]);
eccetera... Nel main lasci le cose come stanno.
Saluti,
Marco
-- 
To email me, remove the no_ and _spam from my address.


Grazie

 Marco
Non funziona. Grazie lo stesso. Ciao

 Non funziona. Grazie lo stesso. Ciao
Infatti ho scritto una boiata colossale!
int * tmp_lit;
int * tmp_headc;
int * tmp_w;
.
:
tmp_lit = calloc(10000, sizeof(int));
.
:
fscanf(file, "%d", &tmp_lit[numlit]);
.
:
/* Questo dove vuoi, ma dopo le allocazioni */
(* lit) = tmp_lit;
(* headc) = tmp_headc;
(* w) = tmp_w;
Cosi` dovrebbe andare.


Newsgroup: it.comp.lang.c
Titolo: Quiz!!

Possedendo un'intelligenza media qualcuno mi saprebbe dire in quanto tempo
un autodidatta può imparare la programmazione C? E se è possibile riuscirci
senza aiuto non conoscendo nulla di programmazione?
E dopo averla imparata risulta semplice imparare C ++ e Java?
mandatemi una e-mail grazie

 E dopo averla imparata risulta semplice imparare C ++ e Java?
No. Però sicuramente uno che già sa programmare in un altro linguaggio
si trova meglio di uno che affronta il C++ o Java senza aver mai
programmato.
EMG

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

ciao!
sapete se riesco a trovare il kernighan & Ritchie on line?
io mi ricordo di averlo trovato una volta, ma non lo ritrovo piů!!!
ciao a tutti!
Luca

 di averlo trovato una volta, ma non lo ritrovo più!!!
compralo..non costa molto...e ti assicuro che ti serve :)
-- 
Rhymes
rhy...@myself.com
" ride or die "

io l'ho trovato tempo fa con WinMX..
--
CIAO!
Gusher


Prova con Morpheus o Kazaa

 io mi ricordo di averlo trovato una volta, ma non lo ritrovo piů!!!
Vi prego... un po' di buonsenso...
Nicholas
Newsgroup: it.comp.lang.c
Titolo: Quando il long non basta più....

Salve,
devo aggiornare del codice in c, per linux, in quanto credo che il tipo di
dato LONG
non sia più sufficiente a contenere il valore numerico che viene assegnato
alla variabile , e cosi dovrei
utilizzare un tipo di dato più grande in dimensione... quale posso
sostituire al posto di LONG?
Ringrazio anticipatamente,
Cooper.

Cooper wrote:

Allora, il long e' almeno a 32 bit, su tutte le architetture. immagino che 
32 bit non ti bastino. Ti do 4 soluzioni partendo da questo presupposto.
- Se hai a disposizione il tipo long long hai un intero a 64bit, dovrebbe 
  bastarti. E' previsto dallo standard C99 e dev'essere almeno il doppio di 
  un long (quindi 64 bit), ma si trovava anche prima dell'adozione dello 
  standard.
- Se non hai il tipo long long puoi provare ad usare un double o un float... 
  guarda quali sono le dimensioni di questi tipi e qual'e' la precisione che 
  ti garantiscono, ma non e' una soluzione brillante.
- GMP (
http://www.gnu.org/directory/gnump.html
)
  "GMP is a free library for arbitrary precision arithmetic, operating on 
  signed integers, rational numbers, and floating point numbers. There is no 
  limit to the precision except the ones implied by the available memory in 
  the machine GMP runs on. GMP has a rich set of functions, and the 
  functions have a regular interface."
- Se non ti basta/non hai il long long e non hai/vuoi/puoi usare la GMP puoi 
  sempre ricorrere a delle stringhe che rappresentino il tuo numero: lenta 
  ma ti garantisce una precisione praticamente infinita (nei limiti della 
  memoria che hai a disposizione)
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."


Ok grazie proverò, ma in termini di compabilità verso le versioni più
vecchie quale consigli fra i quattro elencati? Considera che non devo
apportare modifiche al codice ma solo estendere l'intervallo.
Grazie ancora,
Cooper.
PS: Con linux uso il gcc per compilare (a meno che non faccio confusione)
non sono un linuxiano e nemmeno programmatore c, ma analista con esperienza
di programmazione e quindi comprenderai che mi trovo in un ambiente un
pochino sconosciuto per cui per logica ho pensato di sostituire tutti i long
con il tipo più grande per risolvere il problema che avevo nel codice.
D'altraparte un tipo più grande comprende anche quello più piccolo e quindi
per logica di cose non dovrebbe indurre a errori di alcun tipo, o almeno
credo.

 errori di alcun tipo, o almeno credo.
L'unica soluzione che non richiede di riscrivere porzioni di codice e' usare 
un tipo intero piu' grande, quindi il long long... ogni altra soluzione 
prevede comunque una riconcezione del codice.

Newsgroup: it.comp.lang.c
Titolo: PDcurses Disperato aiuto

Voglio installare le PDCurses ma non ci riesco!!!Ho provato sotto linux a 
fare il solito.
./Configure
ma il comando si interrompe sempre quando verifica i parametri del X11, 
Sull'help c'č scritto di usare dei parametri tipo --x-???? ma non 
funziona nulla mi da sempre errore !!Come devo usare questi suddetti 
parametri??Ho provato anche da root ma nulla!!!
Poi allora ho provato a settare il DJGPP sotto windows 98, copio i file 
.mak per il dos e djgpp della cartella demos e lancio il make con i vari 
programmi ma non succede nulla mi da sempre errore!!!!
Non so piů cosa fare , non c'č nessuno che usa le PDCURSES ???
In + dove trovo una guida su come usarle ??? Sul sito ufficiale non c'č 
nulla!!!
GRAZIE
<<SAX>>



Newsgroup: it.comp.lang.c
Titolo: Algoritmo LZ77

Ciao,
qualcuno ha implementato o sa dove è possibile trovare una
implementazione dell'algoritmo LZ77 (o altri algoritmi della famiglia
LZ) in C/C++ o Java??
thanks!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
-- 
Ciao.
Roberto Rossi
Web   : 
http://rsoftware.altervista.org

 thanks!!
http://www.krugle.com/

Newsgroup: it.comp.lang.c
Titolo: Locate e CLS.

Ci sono delle funzioni in C che eseguire un CLS dello schermo ?
C'è una funzione per posizionare una stringa tipo LOCATE x,y ?
grazie
NIck
--
-----------------------------------------------------------
E-Mail    : 
nic...@nsoft.it
URL       : 
http://www.geocities.com/blues_nick/
ICQ       : 26032113
-----------------------------------------------------------

 C'č una funzione per posizionare una stringa tipo LOCATE x,y ?
Non ci sono funzioni standard per fare cio';
Devi aprire l'help del tuo compilatore e cercare tra le funzioni non
standard.
PS: Sei OT;Questi sono problemi legati alla piattaforma/S.O e non all'
ISO C.

 
gotoxy(x,y);  dallo stesso file
ciao Maurizio

clrscr(); dal file conio.h
quale compilatore ?
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

Newsgroup: it.comp.lang.c
Titolo: [PER MAURUS]

Riguardo la questione del K&R che differenza c'è tra la versione col bollino
nero e quella col bollino rosso? E' così importante che sia col bollino
rosso? E poi, esiste un'edizione del 1991? Lo chiedo perché il mio
negoziante mi aveva detto che l'ultima era quella del 1989
Rispondimi ti prego!!
Grazie
P.S.
Mi scuso con tutti per aver postato destinato ad un solo frequentatore del
ng :)

...

Ciao Roberto,
io posseggo solo la seconda edizione inglese che ha il bollino rosso Ansi C
in copertina. Non so se nella italiana hanno cambiato il colore in nero.
L´anno dell´edizione italiana l´ho letto in qualche sito internet.
In effetti mi sembra strano che l´edizione in inglese sia del 1988 e quella
italiana del 1991, comunque e´ importante che sia la seconda edizione.
Maurus

 rosso?
Io ce l'ho con il bollino blu, come quello delle banane... ;-)
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: perchè questo linguaggio?

salve a tutti,
guardate un po' questa funzione, l'ho scaricata da un sito universitario:
int conta(void *ptr)
{ return(ptr?(1+conta(((NODO*)ptr)->left)+conta(((NODO*)ptr)->right)):0);
}
il mio dubbio è il seguente: che significano il '?' e i ' : '
o meglio che significa l'intera espressione???
grazie
luca

Lux wrote in message ...

Ciao Luca,
quella sintassi e´ un modo compatto del linguaggio C per scrivere questo:
.....
if (ptr)
    return 1+conta(((NODO*)ptr)->left)+conta(((NODO*)ptr)->right);
else
    return 0;
Maurus


The trouble with being poor is that it takes up all your time.

o meglio che significa l'intera espressione???
E' una ricorsione, il che conferisce a una funzione gia' di per
se' scritta coi piedi, un ulteriore grado di illegibilita'.
A un esame di programmazione, quella persona meriterebbe di
essere mandata a casa.
Il C e' una macchina potente (sto rispondendo al tuo subject) e,
come tutto cio' che e' potente, e' anche molto pericoloso.
L'operatore ?: e' un costrutto utile ma assolutamente
sconsigliabile (ebbene si', il 50% delle caratteristiche del C
sono sconsigliabili).
Il codice sarebbe stato molto + leggibile se scritto :
int conta( NODO *ptr ) 
{
    int csx = 0, cdx = 0 ;
    if ( ptr ) 
    {
       /* conto il numero di foglie a sinistra */
       csx = conta( ptr->left ) ;
       /* conto il numero di foglie a destra */
       cdx = conta( ptr->right ) ;
    }
    /* restituisco il peso dell'intero sottoalbero */    
    return (1 + csx + cdx) ;
}
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

}
Leggibile ma non corretto, la versione giusta e' :
int conta( NODO *ptr ) 
{
    int csx = 0, cdx = 0, c = 0 ;
    if ( ptr ) 
    {
       /* conto il numero di foglie a sinistra */
       csx = conta( ptr->left ) ;
       /* conto il numero di foglie a destra */
       cdx = conta( ptr->right ) ;
       /* conta anche la foglia corrente */
       c = 1 ;
    }
    /* restituisco il peso dell'intero sottoalbero */    
    return (c + csx + cdx) ;


 ha scritto nel messaggio
news:3b39f03c...@news.libero.it...


soluzione di un compito di alcuni giorni fa.
Complimenti al "professore".  Sarebbe da bocciare.


sono d'accordo con laforgia, che e' il cognome del professore di analisi
matematica (o di fisica) presso l'ing. meccanica all'universita' di roma
tre.
il fatto e' che un codice deve essere leggibile prima di tutto; esso deve
essere letto da persone e non da macchine... e visto che spesso quando si
lavora su progetti, tocca sempre pensare che dopo di te probabilmente verra'
altra gente a ricontrollare cio' che tu hai fatto, per migliorarlo o perche'
hanno scoperto un insiemi di dati d'ingresso per cui l'algoritmo usato non
e' piu' valido (succede spessissimo, anzi sempre... ma non scendiamo nel
discorso della correttezza di un codice :P)

tre.
E che, tra l'altro, e' mio cugino.
Newsgroup: it.comp.lang.c
Titolo: Dove è sbagliato?

Salve a tutti, il semplice programma che ho meso alla fine di questo 
messaggio mi manda in crush il compilatore.
Potreste provare se a oi viene compilato bene ?
grazie
################################################
#include <stdio.h>
#include <stdlib.h>
int main()
{
    //printf("Hello world!\n");
    struct
    {
     char tipo[6];
     float potenza;
     unsigned int numerogiri;
     float alimentazione;
     unsigned B01:1;
     unsigned B02:1;
     unsigned B03:1;
     unsigned B04:1;
     unsigned B05:1;
     unsigned B06:1;
     unsigned B07:1;
     unsigned B08:1;
     char fine;
    } Dinamo = {"D2001",1200.0,3300,100.0,1,0,1,0,1,0,1,0,50};
    printf("\n\t\tIndirizzi e valoriu dei membri in struttura\n");
    printf("\nIndirizzo = %p:",&Dinamo.tipo);
    printf(" Tipo=%s", Dinamo.tipo);
    printf("\nIndirizzo = %p:",&Dinamo.potenza);
    printf(" Potenza=%s", Dinamo.potenza);
    printf("\nIndirizzo = %p:",&Dinamo.alimentazione);
    printf(" Alimentazione=%s", Dinamo.alimentazione);
    printf("\nIndirizzo = %p:",&Dinamo.fine);
    printf(" Fine=%s", Dinamo.fine);
    return 0;
}
 



 [CUT]
Non ho un compilatore sottomano ma mi sembra che tu inserisca 50 in fine che
è definito come carattere e poi vuoi stamparlo come stringa con risultato
unpredictable IMHO.
Ciao
 Nameci

     printf(" Fine=%s", Dinamo.fine);
In tutte e tre commetti lo stesso errore: il formato %s viene
usato per stampare il contenuto di un (char *) mentre tu gli
passi variabili float e char. A run time questi valori venogno
interpretati come indirizzi e quindi da un errore di access
violation.
Per non avere l'errore devi usare i formati %f e %c
ciao
Giacomo

 %s
qui

 qui
Grazie a tutti, era proprio questo l'errore

Newsgroup: it.comp.lang.c
Titolo: diskread e DJGPP

Salve
Volevo portare alla vostra attenzione una piccola questione.
Sto apprendendo qualche nozione d'uso del compilatore C/C++ DJGPP di
Deloire.
E ho subito notato la funzione diskread() che permette di leggere l'hard
disk settore per settore dal primo all'ultimo.
Volevo capire se esistesse una funzione corrispondente anche in qualche
libreria Microsoft VC++.
Ho provato a usare l'interrupt BIOS 13h (mi sembra sia questo), non ha
funzionato. Mi è stato detto che il VC++ non può richiamare direttamente gli
interrupt BIOS. Non ho capito per quale motivo comunque.
Sperando di non essere troppo OT.
Vi auguro buon lavoro.

interrupt BIOS. Non ho capito per quale motivo comunque.
Per via del fatto che i vettori di interrupt, sotto Windows,
appartengono a una zona di memoria protetta e la gestione
della memoria protetta ti blocca, perche' stai cercando di
accedere ad una zona critica per il sistema.  Con Windows,
cio' che anticamente si faceva in modo + o - libero con DOS,
viene complicato, proprio perche' ci sono maggiori controlli
sul corretto utilizzo della memoria.  Il modo migliore per
compiere queste operazioni e' quello di scrivere un driver o
qualcosa del genere.  In ogni caso, sei OT qui dentro,
spostati su it.comp.programmare.win32.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)
Newsgroup: it.comp.lang.c
Titolo: Visual C

Visto che il Visual C mi arrivera' a giorni..
Mi potreste elencare il meglio del meglio per la programmazione Visual
C? Suppongo ci voglia anche qualche libro per le MFC , quindi gradirei
se mi consigliaste i migliori libri in circolazione (non importa se
sono in inglese , anzi..)...
   Adalberto Simeone -==(U.D.I.C.)==- Avenger Dragon
        E-Mail: 
lafc...@tin.it
    UIN: 1414193
         A New Age of Enlightenment has Begun!

sono in inglese , anzi..)...
La maggior parte dei testi in giro sono per la vecchia versione, VC++5,
mentre immagino che quella che ti arrivi sia la (relativamente) nuova
VC++6.  Microsoft Press/Mondadori Informatica hanno alcuni testi
nuovi su VC++6 specificamente, ma non ho ancora avuto l'occasione
di consultarli, quindi non posso sbilanciarmi relativamente alla qualita`.
Le MFC sono cambiate molto poco di recente, quindi vai probabilmente
sul sicuro a studiare il Prosise (Mondadori) anche se non aggiornato.
L'ATL e` cambiata parecchio da 2.1 a 3.0, ma i testi classici (Wrox
Press il piu` consigliato; ma anche quello di Armstrong per IDG Books)
restano utili per cominciare (poi andranno "integrati").
Tieni anche presente che l'MSDN che ti arriva con il compilatore VC++6
e` PIENA di testi molto utili, compresi libri interi (ad esempio "Programming
the Windows 95 User Interface"); attento quindi a non fare "doppioni"
comprando costosi libri che hai gia` anche in linea...!
Alex
Newsgroup: it.comp.lang.c
Titolo: conversione stringa in esadecimale

Ciao,
in un programmino ho un numero esadecimale in una stringa, ossia ad
esempio "1d".
Mi serve avere il valore di questo esadecimale, il problema è che devo
averlo in una variabile di un solo byte..
Ad esempio se scrivessi:
char stringa[] = "1d"
int numero;
sscanf( stringa, "%x", &numero);
nella variabile numero sarebbe memorizzato 29,corretto.
In teoria per memorizzare un esadecimale di due cifre basta 1
byte,allora ho scritto:
char stringa[] = "1d"
unsigned char numero;
sscanf( stringa, "%x", &numero);
Il problema è che a volte funziona , a volte no, a seconda dei pc su
cui gira il programma.
Su internet ho trovato poche informazioni..
Conoscete un modo per risolvere?

Gabry ha scritto:

Devi specificate un type length , per un char mi pare sia "%hhx" ....
B.

 Conoscete un modo per risolvere?
Non hai specificato che compilatore stai usando: se e' C99-compliant 
puoi usare il "%hhx" come ti e' stato indicato, altrimenti non c'e'
modo di leggere direttamente un char. Devi leggere un intero
e poi successivamente copiarlo nel char.
ciao
Giacomo

Capito..mi informerò sul compilatore..
Mi viene  in mente questo:
char stringa[] = "1d"
unsigned char carattere;
int numero;
sscanf( stringa, "%x", &numero);
carattere = numero & 0xff;
Ho il dubbio che nella variabile intero, normalmente di 4 byte, gli
otto bit necessari a rappresentare le due cifre esadecimali siano
memorizzati nella parte meno significativa, e che insomma l'AND con
0xff possa funzionare sempre..a seconda dell'architettura. Mi sembra
che negli intel i byte più significativo e meno significativo siano
memorizzati invertiti.
Farei allora con l'operatore modulo:
carattere = numero % (2^8)
per trovare byte meno significativo..dovrebbe funzionare.
Ho ancora il dubbio che un intero sia sempre memorizzato su 4 byte..in
quel caso non so se l'operazione con il modulo funzionerebbero
comunque.
Potrei risolverla così secondo voi..?
Gabriele
On 12 Nov, 23:47, Giacomo Degli Esposti


 comunque.
:-)
B.
Newsgroup: it.comp.lang.c
Titolo: Sorgente da recuperare

Salve a tutti
Sono nuovo di questo NG quindi spero di non ripetere post precedenti.
Purtroppo non ho la possibilità di leggerli...quindi chiedo scusa in
anticipo...
Vorrei sapere se qualcuno è a conoscenza di qualche modo per
recuperare codice sorgente da un file obj.
So che la cosa non è così semplice...ma è rimasta la mia unica via di
uscita...
Il problema è che ho bisogno di ricostituire un progetto (non
sviluppato da me) abbastanza complesso dal quale però manca un
sorgente...mi rimangono solo gli obj....
Qualche soluzione?

 Qualche soluzione?
Riscriversi da zero il file mancante.
L'obj e l'eseguibile differiscono solo per il fatto che nell'eseguibile
i link esterni sono stati risolti (c'e' l'indirizzo della chiamata e
non un nome simbolico): dall'eseguibile e' praticamente impossibile
tirar fuori il sorgente...
Trai tu le conclusioni :-)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:16oc00dq5gv69caac...@4ax.com...

Piano, prendere il numerino, uno alla volta, non spingete...... :-)
Lorenzo non vorrei essere nei tuoi panni :-)
A quanti ipost arriveremo qui ? 80-90 ?
Ciao
Giuseppe

Newsgroup: it.comp.lang.c
Titolo: Porta parallela

Qualcuno saprebbe dirmi come faccio a gestire la porta parallela?
vorrei sapere come faccio a gestire l'accensione e lo spegnimento di ogni
singolo piedino,
e la gestione di un flusso dati (da inviare a qualsiasi tipo di dispositivo)
Grazie!
Sereno Ternullo

 ha scritto nel messaggio
news:tc0Pa.7322$it4.1...@news1.tin.it...

Newsgroup: it.comp.lang.c
Titolo: Novello: help su stringhe

lavoro su Linux, uso gcc da xterm,
ho due stringhe STR_A e STR_B e mi serve STR_A=STR_A+STR_B.
Vorrei farlo così:
char *STR_A;
char *STR_B;
STR_A="prova1 ";
STR_B="prova2";
strcat(STR_A,STR_B);
cout << STR_A
il compilatore non dà errori, ma in esecuzione dà "segmentation fault".
Cos'è che non va?
E ci sono altri modi più semplici per unire le stringhe?

 E ci sono altri modi più semplici per unire le stringhe?
In C no. In C++ allochi una string e concateni senza problemi visto che la
reallocazione viene gestita automaticamente dall'istanza della classe.
prova a fare 
  char STR_A[sizeof("prova1 ") + sizeof("prova2")];
  char *STR_B;
   STR_B="prova2";
 
   strcpy(STR_A, "prova1 ");
   strcat(STR_A, STR_B);
   cout << STR_A;
La cosa dovrebbe funzionare senza problemi.
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Le brutte abitudini prese con il VisualC++. :-)
Cosa ha a che fare questo con il VC++?!?
Tommy

 wrote


Il visualC++ 
STR_A="prova1 ";
STR_A="prova2";
alloca "prova 1" in una zona scrivibile del programma, l'istruzione
strcat(STR_A, STR_B);
spesso non da nessun problema se il programma e' compilato con il Visual
C++ e sfugge che la modifica di una stringa costante e' un undefined
behaviour.


 behaviour.
Che strano ero convinto che desse errore! A quanto pare hai ragione tu, a
volte non da errore:
<CODE>
#include<stdio.h>
#include<string.h>
int main()
{
    char *a,*b;
    a="0123456789";
    b="9876543210";
    printf("%p - %s\n",a,a);
    printf("%p - %s\n",b,b);
    strcat(b,a);
    printf("%p - %s\n",a,a);
    printf("%p - %s\n",b,b);
    return 0;
}
</CODE>
<OUTPUT>
00406048 - 0123456789
00406030 - 9876543210
2345678923456789Press any key to continue
</OUTPUT>
L'output mostra che hai proprio ragione tu... Beh, amen, se capitasse una
cosa del genere sarebbe qualche mezzoretta in piu' a debuggare ;-)
Tommy

 cosa del genere sarebbe qualche mezzoretta in piu' a debuggare ;-)
Spera che non ti capiti mai un problema del genere...
Quella mezzora potrebbe farti passare un brutto quarto d'ora che potrebbe
durare una settimana ;-)

Newsgroup: it.comp.lang.c
Titolo: Ordinare una Lista

Devo scrivere una funzione che mi ordini una lista sotto definita per ordine
di età.
Il codice è corretto? Dove ho sbagliato?
#include<stdlib.h>
/* definizione lista */
typedef struct {
        char nome[10];
        int eta;
        int peso;
        } DATI;
typedef struct nodo {
            DATI dati;
            struct nodo *nextp;
           } tipo_nodo;
typedef tipo_nodo *tipo_lista
/* funzione che ordina in base all'età */
void ordina_eta(tipo_lista lis)
{
   boolean ordinato=0;
   tipo_lista scan1, scan2, stop=NULL;
   if(!TestListaVuota(lis)) && (lis->nextp!=NULL)
   {
       while !ordinato
       {
          ordinato=1;
          scan1=lis;
          scan2=lis->nextp;
          while (scan2 != stop)
          {
             if scan1->dati->eta > scan2->dati->eta
             {
                Scambia(scan1, scan2)
                ordinato = 0;
             }
          stop=scan1;
          scan1=scan2;
          scan2=scan2->nextp;
          }
      }
   }
}
TestListaVuota e Scambia sono funzioni definite altrove.
Grazie.
car...@supereva.it

 ha scritto nel messaggio
news:9deot1$jpa$3...@serv1.albacom.net...


Newsgroup: it.comp.lang.c
Titolo: Cattura del flusso di rete

Salve, devo realizzare un semplice (per modo di dire) programma che mi
catturi i dati del flusso di rete.
Lavoro su una rete LAN Unix di tipo Eth0 (ethernet) e devo leggere le
informazioni sul flusso di dati secondo questa scrittura:
      ORA              TIPO          MACCHINA1        MACCHINA2     ecc.
10:43:01.915795 eth0 > 192.173.40.300.tlenet > 192.173.40.4.1300 ecc.
Ho provato a scaricare dalla rete delle librerie a tale scopo (libpcap) ma
non sono riuscito ad utilizzarle a dovere.
Ho bisogno solo di leggere tale stringa e salvarla su di un file.
Grazie.
Tango
ta...@cdh.it


tcpdump 'src host macchina1 and dst host macchina2' (ovviamente da root)
Per le specifiche sui parametri consulta la documentazione della tua
implementazione.
Ivan Molella

Ivan Molella wrote:
PS:Sei OT su questo NG.
Ivan Molella
Newsgroup: it.comp.lang.c
Titolo: leggere da stdin senza far vedere i caratteri immessi

ciao,
stavo cercando di leggere dati da stdin senza che questi venissero
mostrati su stdout (con OS Linux).
il *mini*programma di prova che avevo scritto č:
#include <stdio.h>
int main(){
 char c;
 c=getchar();  /*leggo il carattero*/
 c++; /*lo incremento x sfizio personale*/
 printf("%c",c); /*e lo stampo*/
}
solo che quando viene digitato, compare sul monitor... come fare per evitarlo?
ho provato anche la getc(), ma sembra uguale!
Vi ringrazio in anticipo
ciao
-- 
By_Baitch
"Live Your Life!" (Ring ain't a jail)
http://utenti.tripod.it/baitch

io ho scritto questo codice per l'os winzozz e funziona, fammi sapere
ciao stefano
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define MAX_LEN_PWD 10
int main(void)
{
     int i,count;
 /* devo togliere 1byte per il fine stringa */
 char password[MAX_LEN_PWD];
 i= count = 0;
 system("cls");
 printf("Digitare la Password, massimo %d caratteri:", MAX_LEN_PWD-1);
 i=getch();
 if(i== '\r')
  return(-1);
 for(; count < MAX_LEN_PWD - 1;)
 {
   printf("");
   password[count++]=i;
   fflush(stdin);
   i=getch();
   if(i=='\r') break;
 }
 password[count]='\0';
 printf("\nPassword digitata: %s\n",password);
 return(0);
}

 evitarlo? ho provato anche la getc(), ma sembra uguale!
In C standard non puoi, perche' la gestione del terminale a basso livello 
non e' contemplata.
Devi ricorrere alle conio o alle (n)curses, a seconda del sistema sotto cui 
sviluppi e delle librerie che hai a disposizione. Chiedi su un gruppo 
specifico :)
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

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

Sono le prime volte che tocco con "mano" il contenuto del mio hd con 1
programma ...mi sorgono pero' varie domande a cui non so darmi 1a risposta
...
Bhe iniziamo :
- che differenza c'e' tra fare una flush o un close di un puntatore FILE* ?
- per cambiare la modalita' di accesso su un file basta richiamare fopen(..)
?
- si puo' incrementare/decrementare il puntatore FILE* a piacimento ?
- se dovessi modificare una parola all'interno di 1 file dovrei riscriverlo
tutto (senza fare
  cosi' non ci riesco ...) ?
grazie a tutti :-)

tutto (senza fare cosi' non ci riesco ...) ?
Si', devi riscriverlo tutto.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]
Newsgroup: it.comp.lang.c
Titolo: MySQL & API C su DEVCPP

Gentili programmatori C,
ho provato ad installare le librerie C di MySQL sul compilatore C
DEVCPP: i files di header nella cartella include ed i files di
libreria nella cartella lib.
Compilando un seplice programma test ho ricevuto un'infinità di
messaggi di errore, relativi header di MySQL."Errori di sintassi".
Ad una prima occiata mi sono accorto che vi sono molti segni
incomprensibili tipo quadratini ed altro.
Segno che è stato usato vi o emacs per la scrittura che hanno una
codifica diversa da windows.
Qualcuno mi sa dire dove posso trovare gli stessi file riscritti con
un text editor windows?
Grazie a tutti.
P.S.
Non vorrei riscriverle tutte sono decine di pagine.

 codifica diversa da windows.
E questa dove l'hai letta? L'editor, con un problema del genere (se il 
problema e' quello) c'entra molto poco, direi.
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 Non vorrei riscriverle tutte sono decine di pagine.
Tranqillo devi riscriverti solo il codice che hai sbagliato :-)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: info cast

Ciao, volevo chiedere se potevati spiegarmi questo:
int *people;                 //questo + un puntatore a int (unica cosa
che ho capito :))
ret=(int *)&people+2;   //??? potete spiegarmi questo per favore
*people=(int)numeri;    // e anche questo????..., ho un array che
dichiarato prima...
grazie mille
ciao

 *people=(int)numeri;    // e anche questo????..., ho un array che
people e' comunque un puntatore ad int, non e' stato modificato dal
codice precedente (che invece modifica il valore di ret, che deve
essere stato dichiarato un int*)
Quindi cambi il valore della variabile intera puntata da people
(*people =) al valore di numeri, castato ad int. Come e' dichiarato
numeri?

 bit.
Correzione: muovi il puntatore in avanti di 2 volte 16 bit. Ovvero una
volta 32 bit. Ma e' un'assunzione molto precaria.


Perdonami ma non ho capito:(...
Potrei scrivere cosi:
ret=(int **)+2
ciao

 ciao
int ** non e' un rvalue, e' un cast.
Devi fare il cast di un oggetto per poter farci l'aritmetica. (+2).
people e' un int *, giusto?
&people e' un int **, giusto?
quello che (int *)&people fa e' dire al compilatore che &people non e'
un int **, ma un int *.
Aggiungere 2 ad un int ** aggiunge 2 * sizeof (int *) al suo valore
Aggiungere 2 ad un int * aggiunge 2 * sizeof (int) al suo valore
mettiamo che hai un array:
int a[2];
Due elementi interi.
dichiari poi un puntatore a intero:
int *p;
Poi dici che p punta al primo elemento di a:
p = a;
poi dici che vuoi l'indirizzo di p:
&p
questo genera un int **, un puntatore a puntatore ad intero.
se fai
(int *)&p
fai il cast di un int ** ad int *. Ovvero stai dicendo che l'indirizzo
di p non e' l'indirizzo di un puntatore, ma l'indirizzo di un valore
intero.
Se assegni il risultato ad un int *m:
int *m = (int *)&p;
Cosa pensi stampi *m? il valore puntato da m, che e' un indirizzo, non
un valore intero.
Aggiungere 2 ad un puntatore, aggiunge due volte la dimensione del
tipo dato da lui puntato, quindi m+2 aggiunge 2 * sizeof(int) a m.
Se la dimensione di un puntatore e di un intero sono equivalenti,
effettivamente ottiene lo stesso risultato.
Ma se un intero e' 32 bit e un puntatore 64 bit, aggiungere 2 * 32 bit
ad un puntatore non e' la stessa cosa di aggiungere 2 * 64 bit.
Ovvero mi puzza di bruciato.

Ti posto un programma che dovrebbe farti vedere che cosa succede
quando mischi un puntatore (32bit o 64bit sulla maggior parte delle
archietture) e uno short int (16bit sulla maggior parte delle
architetture):
#include <stdio.h>
int
main(int argc, char **argv)
{
        short int a[2];
        short int *p, **l;
        short int *m;
        a[0] = 10;
        a[1] = 20;
        a[2] = 30;
        p = a;
        printf("p = %p, *p = %hd\n", p, *p);
        l = &p;
        printf("l = %p, *l = %p\n", l, *l);
        m = (int *)&p;
        printf("m: %p, *m = %hd\n", m, *m);
        printf("l + 2: %p, m + 2: %p\n", l+2, m+2);
        return 0;
}
Prova a eseguirlo e capirai.


GRAZIE MILLE!!! , adesso me lo studio con calma...
ciao
Newsgroup: it.comp.lang.c
Titolo: libreria per EEPROM

Mi chiedevo se qualcuno ha qualche libreria o semplici routine per gestire
la comunicazione di un micro (che programmo in C) con una EEPROM seriale
tipo Microchip, ST (93c...)
Grazie



guardato sul sito di st ????
ah.. il tuo problema é il dialogo seriale con il dispositivo (il
programmatore.. e di conseguenza l'eeprom) o la gestione
dell'eeprom per programmarla??
cod
p.s.
datasheet abbisognasi

Newsgroup: it.comp.lang.c
Titolo: leggere la tastiera senza bloccare il programma

Come faccio a leggere la tastiera senza bloccare il porgramma(non voglio 
che si fermi in attesa del carattere premuto)
GRAZIE
<<SAX>>



Potresti usare la select con stdin:
int ret;
fd_set rfds;
struct timeval tv;
ret = 0;
while(!ret)
{
 
   .. fai quello che devi fare..
 
 
   FD_ZERO(&rfds);
   FD_SET(fileno(stdin), &rfds);
   tv.tv_sec = 0;
   tv.tv_usec = 200;
   ret = select( 1, &rfds, NULL, NULL, &tv);
}
si esce dal ciclo solo quando viene premuto invio, cioè quando ci sono
dati in arriva dallo stdin. 
Ciao Matic

 dati in arriva dallo stdin. 
Ma posso usarla sia in dos che in linux perchč sň che select lo uso per i 
socket ma non so se funziona anche sotto dos!!!!
GRAZIE
	<<SAX>>

Newsgroup: it.comp.lang.c
Titolo: [graphics] manca il file... che c'è!

ciao a tutti, compilando il seguente codice
#include <graphics.h>
void main()
 {
    int gerr;   /* graphics error */
    int gdriver = DETECT, gmode;
        /* Initialize graphics using auto-detection and look
           for the .BGI and .CHR files in the C:\TURBOC directory.
        */
    initgraph(&gdriver, &gmode, "C:\\TURBOC");
    if ((gerr = graphresult()) != grOk)
    {
      printf("Error : %s\n", grapherrormsg(gerr));
      exit(1);
  }
}
 mi dice che è impossibile trovare il file egavga.bgi, ma aprendo
il file BGI.arc il file è presente!
Come mai?
Grazie
    Mavimo
PS:Compilo con TC 2.0
--
WIN2000             SP3
.NET Framework      1.0.3705
SharpDevelop        0.92
ASP.NET
 WebMatrix   0.5

Non saprei...anke io ho il BorlandC 3.1 ma non mi da di questi problemi.
Mi sa che la tua scheda video da dei problemi....ma non sò con precisione.
--------------------------------
Inviato via 
http://usenet.libero.it

Risolto, non riusciva a scompattare il file X' mancvano dei plug-in!
Ora tutto Ok!
Grazie X l'interessamento
    Mavimo
Newsgroup: it.comp.lang.c
Titolo: Problemino malloc/free

Ho questo codice:
192         buffer = (char *) malloc (BUFFLEN);
193         n = read (fd, buffer, BUFFLEN);
194         buffer[n] = '\0';
195         fprintf (stderr, "%s\n", buffer);
196         free (buffer);
197         fprintf (stderr, "%s\n", buffer);
non fate caso ai numeri, e' vim che li mette.
Il problema e' questo: in 'buffer' viene memorizzato il contenuto del 
file puntato da 'fd', ed alla prima fprintf viene stampato correttamente.
Ma perche' dopo la free continua a stamparmi il contenuto precedente di 
buffer??
Altri modi per liberare dello spazio allocato in memoria?
Grazie,
caligari.


liberare non vuol dire cancellare. Quindi (per il momento)
le informazioni memorizzate in quel punto della memoria
del computer sono ancora li.
Pero' quella stessa zona di memoria (siccome hai fatto la free)
potra' essere riutilizzata da successive malloc, e quindi
il puntatore buffer potra' puntare ad una zona di memoria
che contiene informazioni diverse da quelle precedenti.
ciao,
g.

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

Qualcuno sa dirmi come faccio a sapere tutte le funzione che si trovano in
un determinato header?!?!?

 ha scritto nel messaggio
news:XA_nd.44506$Es2.9...@twister2.libero.it...


 ha scritto nel messaggio
news:XA_nd.44506$Es2.9...@twister2.libero.it...


> un determinato header?!?!?
E il messaggio a cui rispondi andrebbe sopra.
-- 
RiK0
[ non credo negli schemi non vincenti ]
[     two is an odd prime number.     ]

 delimitatore standard (-- ).
ok, ho eliminto la firma..-)

 prepocessoring,compilazione assemblazione e linkaggio.
Cosa che ti nasconde anche un compilatore.
gcc -o pippo pippo.c
dove le vedi le quattro fasi?
Certo, puoi esplicitarle, e cosi` anche in quasi tutti gli IDE che ho
visto. Semmai posto che sia bene usare sia l'uno che l'altro sistema, e`
piu` facile passare da editor a IDE che viceversa (anche se magari ci si
trovera` scomodi con l'editor dell'IDE).
Comunque stiamo andando orribilmente OT.
-- 
RiK0
Non credo negli schemi non vincenti.

Beh che dire..."razionalmente" hai ragione.Cmq grazie mi hai tolto un paio
di "luoghi comuni"..
cià
Raf.

 ha scritto nel messaggio
news:XA_nd.44506$Es2.9...@twister2.libero.it...


 grazie di tutte queste informazioni...  :))
i niente ...anzi grazie anche a te, visto che sono uno studente, questi
"ripassi" non mi fanno altro che bene :))

 vedendo quindi ciò che il processore ha espanso....l'heder file appunto.
Ok, adesso però lasciami dire: come vedi dal nome apprezzo la citazione, 
  ma come signature proprio non va.
Tagliare, tagliare...

 ha scritto nel messaggio
news:llLod.47263$Ni.16...@twister1.libero.it...

Newsgroup: it.comp.lang.c
Titolo: Link simbolici

Salve a tutti, avrei un problema.
Volevo sapere come faccio a trovare il nome del file puntato da un link simbolico.
Ho provato con la stat(), solo che nella struttura non c'è il campo nome!!!
Potete aiutarmi??
Grazie mille!!
-- 
alfxxx 
------------------------------------------------------------------------
View this thread: 
http://www.itsistemi.net/viewtopic-815891.html
Inviato via 
http://www.itsistemi.net

grazie va benissimo!!!


Newsgroup: it.comp.lang.c
Titolo: Informatica mio amore

sono iscritto al 2° anno del triennio della specializzazione informatica
scuola "Verona Trento" Messina Sicilia e da quando o cominciato a
programmare in c e in c++ (da 1 anno) o capito il vero senso della parola
programmare anche perché prima programmavo in Basic del commodore 64 che non
si può dire neanche un computer .
Comunque se avete qualcosa da consigliarmi o un manuale in italiano
dell'ultima versione del c++ vi prego contattatemi.

 'The Krazy One' +-- 
->  UIN: 21267457 - ircnet: krazy98 - e.d., 10-11pm  <-
---->  "To Reign is Worth Ambition, Though in Hell.
     Better to Reign in Hell Than Serve in Heaven" <---
*** TaRT_Tagline: ((((((((((HYPNOTIC))))))))(((((((TAG LINE))))))))

Newsgroup: it.comp.lang.c
Titolo: Pazzie del C

Ho scritto una procedura che implementa il DES.
Quando richiamo la procedura per criptare o decriptare delle word va in
Segmentation Fault(coredump).
Se all'interno di questa procedura inserisco un prinf("\n"); funziona =
tutto
benissimo.
Io non posso mettere un newline in stampa sullo stdout. Ho provato a
reindirizzare su buffer o file. Niente da fare......... Aiuto

reindirizzare su buffer o file. Niente da fare......... Aiuto
Mai cercare di curare i sintomi. MAI!
In caso di sconfinamento l'ultima delle soluzioni che devono
venire in mente e' quella di "allargare un po' gli array,
che non si sa mai". Se anche si ottiene qualcosa che *sembra*
funzionare in realta' non c'e' nessuna garanzia... e il
programma "funzionera' perfettamente" solo sino al giorno
della presentazione all'amministratore delegato; dove invece
ti fara' fare una figura di cioccolata (oppure sino al giorno
dell'inaugurazione della centrale nucleare ;) ).
E' importante non confondere gli errori di programmazione
con i crash: tu devi cercare di eliminare gli errori di
programmazione, non i crash. I crash sono tuoi amici.
Il tuo problema non e' il Segmentation Fault. Quello e'
solo il sintomo del malessere... che probabilmente e'
uno sconfinamento di qualche array o qualche allocazione
non corretta. Tu dovresti essere contento di aver avuto
la fortuna di incappare in quel dispositivo di sicurezza.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

> Ho scritto una procedura che implementa il DES....
Le varie 'pazzie' del C, come di altri linguaggi, sono sempre risultati
essere miei errori...

 ha scritto nel messaggio
news:9lgdfe$7gg$1...@newsreader.mailgate.org...

Newsgroup: it.comp.lang.c
Titolo: #include e prototipi funzioni

ho creato delle routine che devo mettere in un unico file include
in questo file (skin.h) ci sono molte funzioni, ma una sola verrà utilizzata
(CreateSkinnedWindow())
le altre vengono chiamate solamente da CreateSkinnedWindow, anche più volte
volevo sapere se devo dichiarare tutti i prototipi di tutte le funzioni (nel
file header), oppure basta solo che dichiaro:
HWND CreateSkinnedWindow(POINT pos, POINT size, LPCTSTR skinpath);
?
e se serve solo questo prototipo, lo devo dichiarare nel file header (in
modo che quando si include skin.h non bisogna stare a scrivere tante cose ma
solo #include "skin.h") o per forza nel file principale?
grazie
ciaotutti
{[(Zebra)]}

 solo #include "skin.h") o per forza nel file principale?
Solo nell'header.

Newsgroup: it.comp.lang.c
Titolo: Vettori di caratteri : come mai ?

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

	while ( (c=getchar()) !='\n'  )
E' qui il problema.
Nel primo caso non esegui un filtraggio dell'input mediante una
variabile intermedia come nel secondo caso.
Nel primo caso, percio', mauro[i] diventa '\n' mentre nel secondo
diventa l'ultimo carattere digitato prima del ritorno a capo.

Newsgroup: it.comp.lang.c
Titolo: Cerco Watcom c/c++ versione 11

Ho una grande  necessità di reperire il compilatore C/C++ WATCOM versione 11
o superiori (non inferiori!).
mandatemi una email all'indirizzo : 
mult...@hotmail.com
.
i ringrazio in precedenza.
Sonic-->

 
veramente costerebbe... :-)
-- 
Emanuele Cesena                 
http://www.penguinpowered.com/~ecesena
ece...@penguinpowered.com
                 Attenti all'antispam NOSPAM
"Qualsiasi informazione che comporti un cambiamento nel progetto, sara'
trasmessa al progettista dopo -e soltanto dopo- che tutti i disegni sono
stati completati", prima legge delle Modifiche

...

Newsgroup: it.comp.lang.c
Titolo: unione tra array HELP!!!

Si realizzino le seguenti funzioni dati due vettori di interi che
rappresentano due insiemi
(gli elementi non sono ordinati e non compaiono nel vettore più di una
volta):
  int unione(int insieme1[], int insieme2[], int risultato[]);
 
La funzione costruisce l'unione insiemistica di insieme1 e insieme2
(mette gli
elementi comuni una volta sola) in risultato e restituisce il numero
di elementi contenuti in risultato.
 
  int intersezione(int insieme1[], int insieme2[], int risultato[]);
 
La funzione costruisce l'intersezione insiemistica di insieme1 e
insieme2  in risultato
e restituisce il numero di elementi contenuti in risultato.
  int differenza (int insieme1[], int insieme2[], int risultato[]);
La funzione costruisce la differenza insiemistica di insieme1 e
insieme2  in risultato
e restituisce il numero di elementi contenuti  in risultato. 

   int differenza (int insieme1[], int insieme2[], int risultato[]);
Scusa, ma come gli passi il numero di elementi dei due insiemi di
partenza ? Cioe' come fai a sapere quanti elementi ci sono in insieme1 e
in insieme2 ?
In ogni caso il problema mi sembra piuttosto facile, una volta
che hai l'accortezza di ordinare gli elementi di insieme1 e insieme2,
per esempio chiamando la funzione qsort.
Poi li sandisci ciascuno con un indice e confronti gli elementi
corrispondenti, etc.etc.
Di piu' non posso dirti: proponi tu la TUA soluzione all'esercizio
(e ti diremo dove e' sbagliata :-) )
ciao,
g.

ho postato in un altro messaggio stesso subject il imo sorgente
Ork


ecco tutto quanto cmq
PErchè questa funzione di unione non funziona? non capisco
//voglio fare l'unione insiemistica di due array di interi
//e far ritornare il numero di elementi nell'insieme risultato
//che pero' è passato come argomento, quindi come si
//fa a dichiarare il suddetto array risultato nel MAIN? 
//C'è il problema della lunghezza variabile del vettore
//cioè il valore che la funzione unione calcolerà
int unione(int insieme1[], int insieme2[], int risultato[]) 
{
   int i, j, h; 
 
   for(i=0; i < sizeof insieme1; i++)
   {
     risultato[i] = insieme1[i];
   } 
     while(j < sizeof insieme2)
     {
        i = sizeof risultato;
        for(h=0; h <= i; h++)
        {
           if (insieme2[j] != risultato[h])
           risultato[i+1] = insieme2[j];
        }
      }
      return sizeof risultato;    
}
//MAIN
int i, dim1, dim2, vettris[MaxSize]; 
  printf("Inserire lunghezza vettore 1... ");
  scanf("%d", &dim1);
  int vett1[dim1];  
 
  for(i = 0; i < dim1; i++)
     {
      printf("Inserisci elemento %d : ", i);
      scanf("%d", &vett1[i]);
     } 
 
  printf("Inserire lunghezza vettore 2... ");
  scanf("%d", &dim2);
  int vett2[dim2];  
 
  for(i = 0; i < dim2; i++)
     {
      printf("Inserisci elemento %d : ", i);
      scanf("%d", &vett2[i]);
     }
  int me =unione(vett1, vett2, vettris);      
  //getch();
 
  printf("Numero elementi in risultato: %d ",++me);  
 
 
  getch();
}
Newsgroup: it.comp.lang.c
Titolo: Come leggere i bit di una variabile?

Come faccio a leggere i bit di una variabile, per poi magari stamparli a
video? E' possibile usare gli operatori biti a bit?
Grazie

Devi usarli...
int i, temp;
            for(i = 0, temp = xxx; temp != 0; temp = temp >>1, i++);
            for(; i >= 0; i--)
                        printf("%d",(xxx & (1<<i))>>i);
xxx rappresenta la variabile.
Il primo ciclo for conta il numero dei bit (per questo si usa temp, che ne è
una copia)
Il secondo li stampa
Se si tratta di un valore reale (float, double) il lavoro da fare è
mostruoso...

 mostruoso...
Beh, non direi - semplicemente e' un po' difficile ricavare un senso 
immediato dalla rappresentazione bit a bit dei float... ;)
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 mostruoso...
con una piccola modifica alle linee precedenti si fa in modo banale. Qui 
sotto l' esempio per una variabile  float:
int i;
float xxx,*p;
 
             p=&xxx;
             for(i = 8*sizeof(xxx)-1;  i >= 0;  i--)
                         printf("%d",(*(int *)p>>i)&1 );
Per una double occorre modificare oltre alla dichiarazione di x e p 
anche il cast nello shift nel tipo intero con la stessa dimensione in 
char della variabile ( long o long long).
La stessa cosa (ottenere i bit di xxx) si puo' fare anche usando un' 
unione invece del puntatore.
Giorgio

 
Basta  leggersi le specifiche IEC 66059 ;-)
IMHO e' il miglior modo per verificare quanto le si e' capite.
Giorgio

 Basta  leggersi le specifiche IEC 66059 ;-)
Uhm... mi sento ignorante. L'unica specifica che conoscevo riguardo ai 
floating point era la IEEE 754... questa com'e' correlata? :P


interessante, me lo copio e me lo studio :)

 floating point era la IEEE 754... questa com'e' correlata? :P
Ooops! lapsus di memoria: la sigla e' IEC 60559
Semplicemente e' la versione "internazionale" dello standard IEEE 754.
Giorgio