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

ho due file, voglio leggere i dati di tutti e due i file e caricarli in una
matrice unica.
il problema nasce alla fine del primo file e l'inizio del secondo, perchč
viene memorizzato nella mia matrice uno spazio che non dovrebbe esserci.
riporto qui le scritture di lettura:
fscanf(fprimo,"%s", array_finale[i]);
 while( !feof(fprimo) )
 {
  fscanf(fprimo,"%s", array_finale[i]);
  ptr_array_finale[i]=array_finale[i];                     /*associo un
puntatore a quella locazione della mia matrice*/
  i++;
 }
 fscanf(fsecondo,"%s", array_finale[i]);
 while( !feof(fsecondo) )
 {
  fscanf(fsecondo,"%s", array_finale[i]);
  ptr_array_finale[i]=array_finale[i];
  i++;
 }
Aspetto vostre notizie Kikko979


Hai provato a mettere un altra scanf(fsecondo,"s",array_finale[i]);
non l'ho provato e non so di preciso cosa possa succedere, ma potrebbe
essere utile per capire la radice del problema...vabbe' io avrei provato ;)
e poi visto che non ti ha risposto nessuno.... ^__^
ciau

Newsgroup: it.comp.lang.c
Titolo: Chiarimento su librerie dinamiche in Linux

Qualcuno sa spiegarmi in 2 parole (o darmi un riferimento adatto a bambini di 
6 anni) come funziona il linkaggio alle librerie dinamiche di Linux?
(in particolare che rapporto c'è tra ldconfig, la flag -L e l'opzione -l del 
linker)
Grazie.
Mat

 Linux?
Sicuramente qualcuno su it.comp.os.linux.development
-- 
Enrico 'Trippo' Porreca

 
Oooops e pensare che volevo postare anche in it.comp.lang.c++ ...
Non credevo di essere OT (in fondo era un' informazione riguardante la 
compilazione di codice C... Nessuno usa gcc? ;))
Grazie per il reindirizzamento.
Newsgroup: it.comp.lang.c
Titolo: problema con malloc

Cari amici,
volevo chiedervi un quesito circa l'uso di malloc quando faccio una
dichiarazione del genere:
typedef struct elem *lista_caratteri;
typedef struct elem{
                char valore;
                lista_caratteri next;}carattere;
vorrei chiedere una conferma o precisazione: con tale codice dichiaro una
lista di caratteri dove ogni elemento é carattere (il quale ha due campi,
uno valore di tipo char e l'altro puntatore al successivo). Quando dichiaro
lista_caratteri appoggio;
appoggio=(lista_caratteri)mallooc(sizeof(lista_caratteri));
che cosa avviene per la precisione?
e se invece facessi quest'altra dichiarazione:
typedef char String[20];
typedef struct elem *pElem;
typedef struct elem {
     String nome;
     String cognome;
     int eta;
     pElem next;
     } Elemento;
pElem p;
    p = (pElem) malloc (sizeof(Elemento));
é corretta? quale sarebbe la differenza con quello scritto sopra?
Grazie mille e scusate se la domanda é banale!!
Alessandro Magnante

 é corretta? quale sarebbe la differenza con quello scritto sopra?
Sempre quel cast di troppo... comunque e` corretta. Anche quella sopra
era corretta *sintatticamente*, ma sbagliata logicamente. L'unica
differenza tra questa e la mia versione sopra e` la struttura diversa.
Oh, ci sono troppi typedef. L'abuso di typedef rende difficile leggere
il codice e capire con cosa si sta lavarando. Ci sono pochi casi in cui
un typedef e` necessario (e scrivere un paio di caratteri in meno non e`
uno di questi).
Luca
-- 
Home: 
http://kronoz.cjb.net
"L'abilita` politica e` l'abilita` di prevedere quello che
 accadra` domani, la prossima settimana, il prossimo mese e
 l'anno prossimo. E di essere cosi` abili, piu` tardi,
 da spiegare  perche' non e` accaduto."
Newsgroup: it.comp.lang.c
Titolo: dubbio sulla gestione della memoria

Ciao a tutti,
vorrei chiedere un consiglio su come gestire la memoria in c.
Devo scegliere se allocare una grossa quantità di memoria ( centina di MB 
forse anche un GB) in un unico malloc oppure fare tante allocazioni 
distinte. Io per ora propendo per la prima in quanto evito la 
frammentazione dello heap.
L'overhead di 4 byte per blocco allocato ( derivato dal puntatore nello 
stack che referenzia il blocco ) non mi importa, anche nel caso del 
blocco singolo deve avere dei puntatori interni al blocco per 
referenziare dati che hanno contesti differenti.
Voi cosa ne pensate? E' una scelta sensata?
Siete a conoscenza di problematiche poco conosciute legate alla gestione 
di grosse porzioni di ram?
Grazie mille
  Alessio
      `  _ ,  '
     -  (o)o)  -
    -ooO'(_)--Ooo-_
  /__\  (  )  ( ___)
 /(__)\  )(__  )__)
(__)(__)(____)(____)
Web: 
http://www.alezatti.it
icq: 56138540
skype: alexzattaman
Linux User #407439
==================================================
Coltiva Linux che tanto windows si pianta da solo.
==================================================

 
Le maggiori complicazioni dipendono principalmente dalla complessità 
delle strutture che vuoi allocare e quindi l'indirizzamento.
Allocare una grossa area al posto di tante piccole aiuta ad evitare i 
memory leaks.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

Newsgroup: it.comp.lang.c
Titolo: [?]Curiosità

Salve a tutti , e possibile capire guardando un file.exe disasemblato in che
linguaggio
e stato scritto quel file? o c'è qualche altro metodo?
Grazie
Ciao   Roberto

e stato scritto quel file? o c'è qualche altro metodo?
Se è un eseguibile creato con alcuni linguaggio ad alto livello,
probabilmente puoi identificare il linguaggio dalle librerie
utilizzate dall'eseguibile.
(es.: VB -> VBRUNxx.DLL)
Non esiste, però, un metodo generico

 wrote in message
news:9k9jec$rma$4...@nreadA.inwind.it...

Newsgroup: it.comp.lang.c
Titolo: getvect() -- Borland Turbo C++ 1.0



Salve sono Lucio, potete aiutarmi rispondendo a due domande?:


1) cosa significano la funzione "void interrupt get_out()"
e il puntatore a funzione "void interrupt (*oldfunc)()"


2) Perchè BTC++ non mi compila l'esempio della
guida a getvect()?


    mi dà i seguenti errori


   -  Cannot assign 'void(far*)(...)'
to 'void(far*)()'


   -  Type mismatch in parameter '__isr'
in call to 'setvect(void(far*)(...))'


Commenti personali oltre alle risposte sono graditi. Grazie.


 


#include <stdio.h>


#include <dos.h>


void interrupt get_out(); /* interrupt prototype */


void interrupt (*oldfunc)(); /* interrupt function pointer
*/


int looping = 1;


int main(void)


{


  puts("Press <Shift><Prt Sc> to terminate");


  /* save the old interrupt */


   oldfunc  = getvect(5);


  /*  Cannot assign 'void(far*)(...)' to 'void(far*)()'*/


     /* install interrupt handler
*/


  setvect(5,get_out);


 /*    -  Type mismatch in parameter
'__isr' in call to 'setvect(void(far*)(...))' */


   /* do nothing */


  while (looping);


   /* restore to original interrupt routine
*/


   setvect(5,oldfunc);


  /*  -  Type mismatch in parameter '__isr'
in call to 'setvect(void(far*)(...))' */


  puts("Success");


  return 0;


}


void interrupt get_out()


{


  looping = 0; /* change global variable to get
out of loop */


}


 

 


   -  Type mismatch in parameter '__isr' in call to 'setvect(void(far*)(...))'
Potresti postare il codice per getvect() e setvect() ?


Stai usando prototipi nel formato C.
Nel C++ le funzioni per gli interrupt vogliono i puntini di sospensione come
parametro.
In genere si usa
#ifdef __cplusplus
    #define __CPPARGS ...
#else
    #define __CPPARGS
#endif
e quindi
void interrupt get_out(__CPPARGS);
voi interrupt (*oldfunct)(__CPPARGS);
cosi' funzionano sia in C che in C++.
Ciao
Nazzareno

Newsgroup: it.comp.lang.c
Titolo: curiosita'

se definisco ad esempio
#define pippo 1234567890123454566777
il compilatore come la memorizza?come long, short o non c'entra nulla?

il compilatore come la memorizza?come long, short o non c'entra nulla?
Data la grandezza, come double.
--
Andrea Laforgia (ICQ 87230455)
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

 Data la grandezza, come double.
non lo memorizza.
#define è una direttiva preprocessore, e quindi controlla se c'è già qualcosa che s chiama pippo, e poi in tutti i punti del codice
dove trova pippo, lo toglie e ci mette 1234567890123454566777.
poi se nel codice ho scritto:
unsigned char x = pippo;
il compilatore, su questa linea mi segnala:
prova.cpp(9) : error C2177: constant too big
sarebbe stata la stessa identica cosa se avessi scritto:
unsigned char x = 1234567890123454566777;
ciao
xaero
Newsgroup: it.comp.lang.c
Titolo: Help: dijkstra

sapete se ci sono delle librerie che implementano gia' l'algoritmo in
questione?

 wrote in message
7om89o$npf$1...@fe2.cs.interbusiness.it...


Newsgroup: it.comp.lang.c
Titolo: [Faq it.comp.lang.c] Dove si trova?

Ammesso che esista?
-- 
Simone Martelli
---------------------------
http://www.centerweb.it
http://www.freebooks.it
http://debian.centerweb.it
---------------------------

www.programmazione.it
Ciao, Obelix

 Ciao, Obelix
Grazie

Newsgroup: it.comp.lang.c
Titolo: Dove trovo il borland C?

Salve a tutti!
Visto che ho provato con un paio di compilatori in windows (lcc e compiler
c) e nessuno dei due mi permette di vedere l'output dei programmi, visto che
la finestra del dos scompare dopo qualche frazione di secondo, ho deciso di
programmare  in c sotto Dos (come con il Pascal)..
Dove posso trovare una versione free scaricabile del Borland C?
Grazie ed un saluto.
--
----------------------------------------------
ICQ NUMBER: 147421455
http://www.posieidon.3000.it
http://posieidon.supereva.it

Grazie ed un saluto.
community.borland.com
Guarda nella sezione "Museum", devi effettuare la registrazione che
comunque e' gratuita.  Trovi solo le versioni "Turbo", il "Borland C"
non e' ancora stato rilasciato come "abandonware".
Comunque se il problema e' solo quello della finestra che scompare,
puoi ovviare aprendo una sessione DOS e lanciando il programma da
linea di comando, oppure creare un "PIF" personalizzato.
ciao, acc.   
a...@libero.it

se non erro si puo' ovviare al problema anche con 
system("pause");
ma non vorrei dire cavolate.

Salve a tutti!
Visto che ho provato con un paio di compilatori in windows (lcc e
compiler
c) e nessuno dei due mi permette di vedere l'output dei programmi, visto
che
la finestra del dos scompare dopo qualche frazione di secondo, ho deciso
di
programmare  in c sotto Dos (come con il Pascal)..
Dove posso trovare una versione free scaricabile del Borland C?
Grazie ed un saluto.
--
----------------------------------------------
ICQ NUMBER: 147421455
http://www.posieidon.3000.it
http://posieidon.supereva.it
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

system("pause");
non e` portabile.
-- 
Ciao, Giuseppe

la finestra del dos scompare dopo qualche frazione di secondo, 
lcc? davvero strano...
C:\prog>hello
Hello world!
"C:\prog\hello.exe"
Return code 0
Execution time 0.031 seconds
Press any key to continue...
strano, perché, come puoi vedere, lcc chiede di default di premere un
tasto prima di uscire. Sei sicuro che non si siano verificati errori
durante l'esecuzione del programma? 
Oppure hai modificato le impostazioni? in tal caso, reimposta quelle
iniziali.
Ad ogni modo, aggiungi alla fine del codice queste due linee:
while (getchar() != '\n');
getchar();
e sei a posto.
Inoltre, come già ti è stato detto, puoi anche far girare il programma
direttamente da DOS.
-- 
Ciao, Giuseppe

 linea di comando, oppure creare un "PIF" personalizzato.
Se solo sapessi come si faccia e cosa sia un pif... :-))

Ok ragazzi! Grazie a tutti! Finalmente dopo circa 4 mesi grazie ai vostri
aiuti sono riuscito a vedere l'output di un programma c in win! Cmq il
problema riguardava la compilazione!
Un saluto
Newsgroup: it.comp.lang.c
Titolo: File non persistenti sotto NT

Ho un problema... Devo far sì che dei processi siano in grado di condividere
dei files generati on-the-fly... Il problema è che la vita media di questi
files (che in realtà sono reports) è di due minuti (forse un po' di più
forse un po' di meno).... Per questo motivo è abbastanza inutile salvarli su
disco... E qui arriviamo al punto... Vorrei sapere se c'è qualche API che mi
possa aiutare... In parole povere io cercherei la possibilità di avere sotto
NT un file-system che usi come risorsa standard la memoria salvo poi
swappare su disko nel caso la memoria serva ad altri processi... Un po' come
i memory maps... Con la differenza che, quando un processo chiude il file,
questo se ne può tranquillamente rimanere in memoria... Non mi interessa che
venga salvato su disko... Se poi fosse condivisibile in rete sarebbe
fantastico! :-) (le memory maps non sono normalmente condivisibili in
memoria)...
Se no mi sa tanto che mi toccherà fare cose molto artigianali e buffe :-)
(tipo creare un processo (o un servizio) che tenga in vita la risorsa
allocata tenendosela aperta così che i processi che la usano la possano
aprire e chiudere a piacimento... Salvo poi ogno n minuti chiuderla ed
eliminarla)
Dimenticavo... Programmo C e C++ (Visual e Builder)
Bye
Max

 venga salvato su disko... Se poi fosse condivisibile in rete sarebbe
Non conosco questo espetto di NT, ma non capisco una cosa:
questi file esistono o sono su memoria?
Se sono su memoria, č normale e giustissimo che, una volta chiusa
l'applicazione (o le applicazioni) che li usano, questi spariscano.
Per la condivisione, so che esistono meccanismi per condividere risorse in
rete NT, tipo le named pipes, che credo facciano al tuo caso. E scrivere un
server COM (o DCOM) che faccia da interfaccia?
Spero di averti dato idee, altro non posso, dato che non programmo cosě
"seriamente" in NT.
--
Alessandro Monti

server COM (o DCOM) che faccia da interfaccia?
Guardiamola in un'altra maniera... Voglio un ramdisk senza limitazioni di
dimensione (tranne quella dello swap) e swappabile! E dev'essere sotto NT...
Se c'è bene... Se no mi toccherà farlo manualmente! :-)
Infatti... Probabilmente mi toccherà usare un server COM o qualcosa del
genere! Di base le named  pipes non vanno bene perchè quando tutti i
processi le chiudono spariscono... Invece io voglio qualcosa che possa
sopravvivere per lo meno fino allo spegnimento del comp.
Bye
Max
Newsgroup: it.comp.lang.c
Titolo: in un bicchiere d'acqua?

probabilmente mi sto perdendo in un bicchiere d'acqua.
cerco di copiare un file e scrivo la seguente:
.....
  putc(getc(input_file), output_file); 
.....
pero' la cosa non funziona perche' quando il byte da copiare ha valore
10
il risultato della copia sull'output_file non corrisponde.
perche'?
grazie per l'attenzione!  ;>

10 il risultato della copia sull'output_file non corrisponde.
Presumibilmente (non ce lo dici, ma si intuisce dai sintomi)
sei su Dos, WinXY, Mac, OS/2, o altro sistema non-Unix, e hai
aperto output_file in modo-testo, invece che in modo binario;
10 e` il codice decimale corrispondente a '\n' (new-line), e,
quando viene scritto su di un file di testo, su quel file vengono
scritti i byte corrispondenti, nel dato sistema operativo, alla
"fine riga" (13, poi 10, su Dos, Win, Os/2; solo 13, su MacOs;
lo stesso 10, su Unix, Linux, ecc).
Aggiungi una "b" alla stringa di opzioni di apertura, sia per
input_file, sia per output_file (facendole diventare, rispettivamente,
"rb" e "wb", immagino), e questo problema dovrebbe sparire.
Un problema che forse non sparira` e`, cosa succede alla fine
del file di input.  getc ritornera` allora EOF (un codice int, al
di FUORI della gamma dei char) -- ma tu non testi questo, e
scrivi incondizionatamente con putc (inserirai dunque un char
in piu`, corrispondente al cast a char di EOF).  Normalmente
dovresti avere codice del tipo (presumibilmente, body del ciclo):
    int c = getc(input_file);
    if(c == EOF) break;
    putc(c, ouput_file);
NOTA che c NON deve essere dichiarato char, altrimenti ti
trovi di nuovo il problema del troncamento-a-char di EOF;
DEVE essere dichiarato int, per portabilita`.
Alex

Newsgroup: it.comp.lang.c
Titolo: No paguemos por navegar !

Perdón por si molesta.
A todo el que quiera ganar dinero. Dejad un mensaje con el asunto
"información" en esta dirección 
yomi...@mixmail.com
 y recibiréis un e-mail
con información completa de las mejores maneras de hacer dinero en la red.
Además tendréis la posibilidad de crearos una página con los links a las
compañías a las q os halláis inscrito para tener un montón de referidos,
solo debes poner tus identificadores y desde el primer segundo q te des de
alta ya tendrás tu propia web. En el link de abajo.
Los que dicen que es mentira da la casualidad que no lo han probado...
--
yomismo
www.navegana.es/dinero/arimi.html
La mejor forma de ganar dinero en la red.
HAZ CLIC EN EL LINK

 wrote in message
NUYM5.105547$dT1.2...@telenews.teleline.es...

Newsgroup: it.comp.lang.c
Titolo: problemi col funzionamento di un exe...

Un saluto a tutto il NG!
Ho il seguente problmea, ho scritto, compilato, e ho fatto l'exe di un
stupidissimo programma in c. L'unico problema è che quando vado a fare
partire l'exe non succede  assolutamente nulla, non parte ne il
programma ne nessuna schermata d'errore. Secondo voi quale può essere il
problema?
Quale la risoluzione?
P.S.  Vorrei ringraziare Mox per avermi suggerito il libro, l'ho
comprato e spiega tutto davvero in maniera esauriente!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Quale la risoluzione?
bho
se il prog e' così tanto stupido non potevi postarne il codice?
Le cose più stupide che mi vengono in mente sono:
1) non produci output;
2) non c'e' mai una interruzione nel programma (chessò, una scanf) e lo
lanci con un collegamento dal desktop di windows: il prog si esegue
velocemente e si chiude alrtettanto velocemente
devi essere più specifico: "ho un exe e non funziona" è il massimo del
minimo :)
Ciao,
Riccardo

     printf("Salve, mondo\n");


Se sei sotto windows probabilmente la console viene chiusa prima che tu
riesca a vedere qualcosa, perchè il programma non fa che scrivere una linea
a video e chiudersi (e con esso la console). Metti una getch() dopo
printf...
Dome

 Dome
Niente da fare, ho provato a mettere la getch() dopo la printf, ma non
accade nulla!
Se davvero l'exe parte e si richiude subito dovrebbe farlo in qualche
millesimo di secondo perchč io nn vedo nulla. Comunque sono sotto
windows e compilo con Icc-win32...
Ho anche altri exe fatti in Pascal e partono tranquillamente senza
problemi mah...
Non so piů cosa fare!
Aiutatemi vi prego
Un saluto


 ha scritto nel messaggio
news:c3484a3e167482483fc...@mygate.mailgate.org...
 #include <stdio.h>
 main()
 {
     printf("Salve, mondo\n");
     while(getchar()!='\n');
 }

 ha scritto nel messaggio
news:c7508ff0cd05758762a...@mygate.mailgate.org...

Newsgroup: it.comp.lang.c
Titolo: sprintf

Non riesco a risolvere questo problema che per alcuni (sicuramente
tutti voi!!) può sembrare banale.
il progetto che sto sviluppando prende un codice caricato in memoria e
deve stamparlo a video
Il codice numerico è 2212335734 nella variabile cop[cur].var
lo memorizzo in una stringa con
sprintf(bu,"%07ld",cop[cur].var);
in bu mi ritrovo questo: "-
2082631562
"
Con un altro codice invece non ho nessun problema
da 620566418 rimane 620566418 !!!
Premetto che sto prendendo in mano codice già scritto e senza un
commento, quindi non posso dirvi che ragionamento c'è dietro!
Grazie a chiunque possa essermi utile


Forse cop[cur].var è definito come "int" e non come "long int" ?
Controlla bene che la dichiarazione del tipo coincida con la maschera
"%ld" (long int)
Il valore 2212335734 dichiarato in un int (non unsigned) provoca un
overflow e diventa -> -
2082631562
 detto in parole moolto spicciole
Puoi risolvere o dichiarando long int e usando "%ld" o dichiarando
unsigned int e usando "%u"
Ciao
Matic

Forse cop[cur].var è definito come "int" e non come "long int" ?
   Forse e` addirittura definito come "char []" o "char *", se ho
capito bene l'op.
-- 
S.L.

in bu mi ritrovo questo: "-
2082631562
"
0x83DD9076
   Probabilmente stampi un unsigned come se fosse un signed. Su
architettura Intel (suppongo) di solito si comportano cosi`.
-- 
S.L.

 [...]
Vedrai che il problema si presenta con qualsiasi numero > 2^31-1 (2 elevato
alla 31, meno 1).
Se e' cosi', segui i validi consigli che ti sono stati dati dagli altri.
Tieni comunque presente che se usi variabili di 4 byte, anche sfruttando la
caratteristica 'unsigned' troverai lo stesso problema con numeri > 2^32-1
(dell'ordine di 4 miliardi)
Ciao,
Ema
Newsgroup: it.comp.lang.c
Titolo: Puntatore a funzione

Ho la necessità di dichiarare un puntatore a funzione, però allo
stesso puntatore devo poter assegnare diverse funzioni che
restituiscono entrambe lo stesso tipo, ma ricevono in input parametri
di tipo diverso, ma tutte le funzioni richiedono lo stesso numero di
parametri (in pratica è la base per costruire un menu, in modo che
selezionando una posizione dell'array, si esegua la funzine
corrispondente).
E' possibile ottenere il risultato voluto?
Se invece le funzioni restituissero dei tipi diversi, come poter fare?
Grazie in anticipo delle risposte
Paolo

 Se invece le funzioni restituissero dei tipi diversi, come poter fare?
in questo caso potresti scrivere:
void * (*funzione)(void *, void *)
Comunque non sono sicurissimo di quello che dico, quindi aspetto conferma
dagli esperti.
Raffaele.
Newsgroup: it.comp.lang.c
Titolo: C su linux

Volevo postare nel gruppo linux ma sembra che non sia più in archivio.
Volevo che qualcuno mi indicasse una serie di risorse per comprendere
alcuni aspetti circa la programmazione C su linux: cosa é un makefile,
come si crea, un file configure, config.m4, opzioni di compilazione
per GCC ecc.
Sono cose che c'entrano poco con il linguaggio ma c'é qualche
documento in rete
oppure un buon libro che spieghi per bene come fare queste cose ?
Grazie a tutti, spero di non essere Off-Topic.


www.gnu.org/manual/manual.html
ciao ...
P.S.
penso che sei OT ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

kioto ha scritto:

Ciao,
guarda che i.c.o.l.develpment esiste ancora, eccome!
Non so se e' il tuo provider a non renderlo disponibile.
Prova con un'altro news server.
Ciao
Giuseppe


c'  anche questo:
http://sources.redhat.com/autobook/
ciao!

Newsgroup: it.comp.lang.c
Titolo: Chiarimenti confrontare i valori di una struttura

Ciao Cybertoldo  ti volevo prima di tutto ringraziare per il tuo aiuto e 
scusarmi se non ho risposto prima ma purtroppo ho la febbre,
non ci voleva proprio ma che ci devo fare. Sono solo riuscito ad 
eseguire il prog e a scriverti, ma purtroppo nella compilazione del prog 
    ho un errore.
/* verificato che i singoli ottetti non possano essere < 0 o > 255, *//* 
si puo' usare la loro somma come controllo == 0 */
if(bValidLine && (Addr.xx + Addr.yy + Addr.zz + Addr.mm) == 0 && 
strcmp(Addr.nick_name, SENTINEL_NICKNAME) == 0)
     break;  /* trovate le sentinel richieste dal testo */
if(bValidLine)
         {    paddress_t pNewAddr;
----          if(!(pNewAddr = malloc(sizeof(*pNewAddr))))
---- invalid conversion from `void*' to `tag_address*'
return nRet;
il rigo tratteggiato e' quello a cui si riferisce. Spero che possa 
aiutarmi.
Ti ringrazio ancora
Ciao Claudio

 ---- invalid conversion from `void*' to `tag_address*'
...
Non è  che stai  utilizzando un compilatore C++ ?
Giorgio

Giorgio Pastore ha scritto:

Oppure usa un compilatore C/C++ in modalita' C++.
Comunque compila in C++.
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

Ciao Cybertoldo,
Ciao Giorgio
si e' perche' compilavo in c++, purtroppo il prof vuole che compiliamo 
in c++ anche se noi studiamo il C. :(
cmq io sono costretto ad utilizzare il dev-c++.
grazie ancora
ciao
Cybertoldo ha scritto:


 cmq io sono costretto ad utilizzare il dev-c++.
Quindi usi il gcc. Perche' ti lamenti?


 
no no ma io non mi lamento e' che ogni tanto mi perdo nelle cose più 
banali. :)
Ciaoo
Newsgroup: it.comp.lang.c
Titolo: select()

potreste farmi un esempio pratico di come la funzione select possa essere
usate per sapere se ci sono dati da spedire in modo che la funzioni send
non blocchi ?

non blocchi ?
A cosa serve spero tu lo sappia visto che chiedi come si usa, quello
che forse non sai e' che non fa' parte dello standard C, ma solo
conforme a BSD 4.4... in pratica lo trovi su tutti i sistemi che hanno
copiato lo stack TCP/IP da BSD (penso quindi su quasi tutti i sistemi
unix).
Un buon posto dove chiedere e' news://it.comp.os.linux.development.
-- 
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: ALBERI E FOGLIE 2 errori

Ragazzi, grazie per la pronta risposta, ho provato a imlementare l'algoritmo
di Tommy, ma ho dei problemi,vi riporto l'esempio che ho provato io per
testare l algoritmo:
ho caricato quest albero:
( 7 ()( 67 ( -22 ()( 36 ()() )  ) ( 30 ( -27 ()() ) ( 7 ()() )  )  )  )  è
in notazione parentetica le () indicano le foglie
è evidente che l albero ha 8 foglie, mentre con questa funzione ottengo:
int ContaFoglie(Alberoptr a)
{
    int ret=0;
    if(a){
        if((a->sinistro==NULL)&&(a->destro==NULL)){
            ret = 1;
        }else{
            ret = (ContaFoglie(a->sinistro) + ContaFoglie(a->destro));
        }
    }
    return ret;
}
solo 3 foglie.
Cosè che non va?????
grazie ancora
                    Carmine

 Cosè che non va?????
Dimmelo tu!
Tommy

 ha scritto nel messaggio
news:M%aRa.179618$lK4.5...@twister1.libero.it...


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

salve,
Vorrei avere una documentazione completa per quanto
riguarda gli interrupt (per PC),sui vari indirizzi e il loro funzionamento,
con il linguaggio C.Al limite anche dei link su siti.
ciao daniele
 
uc...@tin.it

con il linguaggio C.Al limite anche dei link su siti.
Esiste la Ralph Brown Interrupt List e la puoi trovare pressoche' ovunque su
Internet (anche su VOLFtp mi pare).
Comunque sappi che e' abbastanza corposa.
Se pero' hai bisogno di qualcosa di specifico chiedi pure.
Andrea Laforgia
----
I guai ve li andate a cercare : 
quando Bill Gates annuncio' che avrebbe fatto scrivere 
Windows98 a Topo Gigio perche' non gli avete creduto ?

...


per turbo c++ 3.0 ),
In modo testo puoi usare un far pointer inizializzato a 0xB8000000L e con
_fmemcpy (BorlandC) ti copy tutto per 80x25x2 byte.
Ma perche' non va bene gettext() ?
ciao
donCiccio

...


ma grazie lo stesso
Be', in realta' il codice che interfaccia l'hardware non e' quasi mai portabile.
La memoria video in modo testo a colori inizia all'indirizzo segmento:offset =
0xb800:0.
Quindi ti basta definire un puntatore 
char far *video_mem = (char far *)0xb8000000L ;
ed utilizzare la funzioni specifica del TC (se non ricordo male dovrebbe essere
_fmemcpy per copiare i dati.

Newsgroup: it.comp.lang.c
Titolo: Peche non funziona??

Chi mi puo aiutare????....penso quasi nessuno xche non uso Win o Linux ma
BeOS, cmq..........il seguente codice non funziona, xche?
#include <fstream.h>
int width, height;
void LoadSetupFile(void)
{
 ifstream in_file;
 char buf[80];
 in_file.open("setup.ini", ios::nocreate);
 while(!in_file.eof())
 {
  in_file >> buf;
  if(buf[0] == '#')
  {
   in_file.getline(buf, sizeof(buf), '\n');
  }
  else if(strcmp(buf, "WIDTH")==0)
  {
   in_file >> buf;
   width = atoi(buf);
  }
  else if(strcmp(buf, "HEIGHT")==0)
  {
   in_file >> buf;
   height = atoi(buf);
  }
 }
}
grazie in anticipo!!

 Linux ma BeOS, 
  BeOS == C++... Chiedi in news:it.comp.lang.c++.
	Alla prossima,
		Marco


BeOS == C++ && C .........cmq provero nel it.comp.lang.c++
grazie e ciao!!
Newsgroup: it.comp.lang.c
Titolo: abs

Che cosa è l'abs?
Come si utilizza?
Come si fa questo esercizio:
Scrivere un programma che calcoli e visualizzi le seguenti espressioni:
a  = ZERO - abs(x)
b  = TOP - abs(y)
c  = a*b
dove x e y sono variabili intere immesse dall'utente, ZERO e TOP sono
costanti intere di valore 0 e 1000
Vi ringrazio per l'aiuto

 Come si fa questo esercizio:
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#define ZERO 0
#define TOP 1000
int main(void) {
   int x, y, a, b, c;
   printf("Dammi la x: ");
   scanf("%d", &x);   
   printf("Dammi la y: ");
   scanf("%d", &y);   
 
   a = ZERO - abs(x);
   b = TOP - abs(x);
   c = a * b;
   printf("Il risultato è: %d \n", c);
  return 0;
}
Newsgroup: it.comp.lang.c
Titolo: nomi librerie

(sotto linux)
quando devo linkare le librerie per compilare un programma, devo mettere 
  -l seguito dal nome delle libreria che mi interessa presente nella 
directory precedentemente specificata col paramentro -L,giusto? se la 
libreria ha come nome del file libpippo.so.1.3.0 devo scrivere -lpippo?
solo per conferma, la stessa procedura vale per il C++ (usando però g++) 
giusto?



yeah!
ma non facevi prima a provare che a chiedere ?

Newsgroup: it.comp.lang.c
Titolo: Quale libro x imparare il c?

Come da oggetto
x un principiante
--
Bax

 ha scritto nel messaggio
news:Rbuh8.11801$5z3.3...@twister2.libero.it...


Richie,
Kernighan & Ritchie
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

Secondo me "C corso completo di programmazione", autori Deitel & Deitel,
Apogeo è un ottimo libro per principianti, ha una buona gradualità
nell'esposizione degli argomenti e negli esercizi proposti.
Bax ha scritto nel messaggio ...


>Schildt
Su questo NG non sono ammesse le bestemmie Superaldo :)
Il K&R e' l'unico vero libro del Vero programmatore quindi ovviamente
va' bene :)
Il Bellini e l' altro Oki, ma lo Shildt proprio no :)
-- 
Mox

Lo Schildt lo sconsiglio... poco chiaro, tradotto male... :-( un disastro
insomma...
meglio Deitel & Deitel
Saluti
Mario

meglio Deitel & Deitel
Tranquillo: la colpa non e' del traduttore, anche la versione in
lingua originale fa pena :)
-- 
Mox

 ha scritto nel messaggio
news:fqff8u8q1dliikn19...@4ax.com...


non ha usato le sue braccina per zappare la terra?
Se lo sono chiesto in tanti :)
-- 
Mox

 si vede che schildt ha sempre scritto C 
Il bello e` che il signor Schildt partecipa regolarmente alle riunioni
del WG del C++...
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"La mia teoria scientifica preferita e` quella secondo la quale gli 
 anelli di Saturno sarebbero interamente composti dai bagagli andati 
 persi nei viaggi aerei." -- Mark Russel

[...]

[...]
?
--
Lawrence Oluyede
rhy...@myself.com

 
rhy...@myself.com

Newsgroup: it.comp.lang.c
Titolo: strano comportamento

Ciao,
qualcuno sa spiegarmi perchè modificando questa parte di codice
semctl(semaforo,0,SETVAL, val));
in questa
if(!semctl(semafori.inservienti_side,0,SETVAL, val)) return semctlError();
il mio programma parte ma ritorna subito alla shell senza dare alcun output
(nelle istruzioni successive ci sono delle printf)?
grazie
Fabrizio


Dato che mi pare che queste siano funzioni unix/linux, prova a postare 
su it.comp.os.linux.development - l'argomento di questo newsgroup e' il 
C standard.
-- 
/**
  * 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
  */
Newsgroup: it.comp.lang.c
Titolo: Generazione numeri casuali distinti

Ho un piccolo problema sulla generzione di un certo numero di numeri
casuali in un intervallo di interi.
Il mio problema è che devo generare 70 numeri casuali DISTINTI interi
nell'intervallo 0-300 (di interi) in C.
Dopo un giro in rete ho capito che esiste una formula di statistica che
può essere implementata in C e garantisce che i numeri siano
assolutamente DISTINTI.
Tuttavia non sono sicuro che la cosa stia propio in questi termini e non
so come implementare.
Qualcuno lo ha già fatto?
Mi potreste spiegare come fare?
Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 nell'intervallo 0-300 (di interi) in C.
Potresti utilizzare un array di interi da 301 elementi inizialmente
"vuoto" (scegli tu il numero che indica vuoto) e riempirlo man mano che
generi i casuali. Se un casuale è stato già generato (perché la
corrispondente posizione nell'array è già riempita) allora ne generi un
altro.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

Newsgroup: it.comp.lang.c
Titolo: Liste nelle librerie standard

Salve a tutti,
volevo sapere se esistono nelle librerie standard del C (o C++) delle
strutture dati con relative funzioni per poter creare e gestire
velocemente i vari tipi di liste (pile e code).
Mi serve saperlo perchè devo partecipare alle olimpiadi di informatica,
dove la rapidità nello scrivere codice è essenziale.
Quindi se conoscete altre librerie standard utili elencatemi anche quelle
(per ora mi limito ad algoritmi come qsort, bsearch, lfind, memset...).
Per librerie standard intendo ovviamente quelle allegate a tutti i
compilatori C/C++.
Grazie!
-- 
Pink Floyd - Programmatore Neoborn Software
"Must the show go on?"
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 velocemente i vari tipi di liste (pile e code).
In C non credo vi sia niente di *standard*.
(Librerie non standard, custom, fatte in casa... beh sicuramente se ne 
troveranno!).
In C++ invece - grazie al cielo - esiste una libreria che e' parte dello 
standard, chiamata STL (Standard Template Library), che fa proprio al 
caso tuo. 
Infatti, tale libreria implementa delle classi "contenitore" come list, 
array, mappe, etc.
es.: std::list, std::vector, std::map ...
Pero' questo argomento e' specifico del C++, quindi se vuoi discuterne 
ti conviene passare su it.comp.lang.c++ ...oppure cerca con Google: 
troverai molto!
Ciao e in bocca al lupo per le tue olimpiadi!
Dan

 velocemente i vari tipi di liste (pile e code).
In C++ sě, in C no.
-- 


 > Ciao,






[erroruccio scusate il doppio post...]
Grazie mille, ho cercato list, queue e stack su google, sono chiarissime e
mi sembrano anche veloci nell'accesso (il const_iterator è un'ottima
soluzione).


 Ciao,







Newsgroup: it.comp.lang.c
Titolo: Interfacciare c e assembler

Ho la necessita' di utilizzare in c delle funzioni in assembler
utilizzando     extern funzione...
ma ho qualche problema:
Da quello che ho capito dipende da come vengono definiti i segmenti nel file
asm
o qualcosa del genere. Qualcuno mi sa dare qualche dritta??? grazie.


Di solito nei manuali dei compilatori e' spiegato come fare.
Pero' secondo me la cosa migliore e' andare a vedere il listato .asm
che il compilatore genera. In questo modo vedi direttamente
come vengono passati i parametri, che cosa viene salvato nello
stack, come vengono cambiati i nomi, ecc.
Quando hai capito il funzionamento dopo puoi tranquillamente
scrivere tu il tuo programma in assembly.
Saluti.
Luigi

o qualcosa del genere. Qualcuno mi sa dare qualche dritta??? grazie.
C'e' una tecnica particolare, io la usavo tempo fa, ma appena trovo la
documentazione te la spedisco.
Andrea
------------------------------------------------
combatti anche tu il "nano scemo" :
http://www.geocities.com/Hollywood/Studio/6989
------------------------------------------------

Newsgroup: it.comp.lang.c
Titolo: header files

Salve a tutti,
volevo sapere come si utilizzano gli header files, quali sono le regole per
"importare" funzioni esterne e come devono essere salvati i file .h
grazie a tutti

 e come devono essere salvati i file .h
..come semplici file di testo.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

intendevo sapere la teoria di base delle inclusioni di file. c'è un esempio
sul K-R che non comprendo bene, per esempio se io volessi spezzettare il mio
programma in più files, come dovrei  fare? magari sarebbe comodo creare una
funzione di lettura da usare in più programmi diversi....
grazie
Daniele
"Andrea Laforgia" <z...@xx.xx> ha scritto nel messaggio
news:d5lvdf$8ch$1...@news.newsland.it...

Newsgroup: it.comp.lang.c
Titolo: funzione strana....

dovrei usare una funzione di una libreria (ho i sorgenti) ma non riesco a
compilare, ho guardato i sorgenti e ho trovato una funzione di questo tipo:
static int ReplaceEnd( word, rule )
   char *word;
   RuleList *rule;
   {
...
}
ma... cosa sono "char *word e rulelist *rule" ? parametri? E' standard tutto
cio'?
grazie 1000
Dade

Dade wrote:

Vecchio stile di dichiarazione C


Ciao :-)

 Dade wrote:

grazie tantissimo! l'ho aggiornato e compilato subito :)
ciao
Dade
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 static int ReplaceEnd( char *word, RuleList *rule )
Il codice che stai leggendo è, sicuramente, molto vecchio.

Newsgroup: it.comp.lang.c
Titolo: NTP API

Hy all,
 devo scrivere dei moduli in C/C++ che devono interfacciarsi con un
server NTP (Network Time Protocol), per poter poi scrivere un timestamp
su dei file.
Qualcuno conosce API, SDK etc. per interfacciarsi con tale server?
Thanks in advance,
 MR
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

  MR
visto che cerchi sdk,che poi dubito ci sia visto che sono 3 istruzioni,ti
sembra il newsgroup adatto ?
se cerchi su google trovi tutto in 5 minuti (time porta 37)

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

ho un grosso problema con i file....
se io leggo una riga contenuta nel mio file funziona.....ma per leggere la
riga successiva?nel senso:
il file testo.txt č:
prova1
prova2
prova1 riesco a prenderlo...ma per prova2 come faccio?
Giosva


Non mi sembra un problema... che funzione utilizzi per leggere la stringa?

Newsgroup: it.comp.lang.c
Titolo: Come si printare un testo in posizione X,Y in MS-DOS con il C

Sono un neofita!
Chissà chi mi vorrebbe indicare come si può "printare" un testo mediante
coordinate X,Y in MS-DOS con il C?
Bisogna allocare il testo nella memoria video? Se si a che indirizzi?
Grazie
Giorgio

gotoxy della libreria conio.h ... consulta l'help per il suo uso

 ha scritto nel messaggio
news:HTie9.74653$pX1.2...@news2.tin.it...


 la prima...
quando chiami una funzione non devi scrivere: void gotoxy (a, b);
ma: gotoxy (a, b);
Comunque conio.h non č standard (ovvero: va su qualche vecchissimo 
compilatore per dos, difficilmente su qualcuno per Win e *sicuramente* non 
va su nessuno per linux). Prova a cercare su internet la libreria "curses" 
(che esistono su dos, unix ecc.. ecc..).
-- 
Andrea Bergia - studente
Linux Registred User #281550

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

Salve a tutti , devo leggere un file di testo ma non devo
contare le righe vuote.Come posso fare?
Grazie a tutti
Ciao

 contare le righe vuote.Come posso fare?
Non hai modo di saltare le righe vuote durante la lettura, devi leggerle 
tutte e solo dopo puoi separare quelle vuote da quelle non vuote.
ciao
Giacomo


 le righe sono di lunghezza variabile , devo utilizzare strncmp
per valutare se e una riga solo di spazi?
Grazie
Ciao

 per valutare se e una riga solo di spazi?
Stai pensando ad un confronto tra ogni riga e i primi tot caratteri di 
una stringa composta da n-mila spazi? Non e' una buona soluzione, anceh 
perche' ti impone una lunghezza massima che puo' avere ogni riga.
Ti conviene ciclare su tutti i caratteri della stringa e verificare se 
sono tutti spazi, in questo modo funziona per righe di qualsiasi lunghezza.
ciao
Giacomo

  ti ringrazio.
Ciao
Newsgroup: it.comp.lang.c
Titolo: Cominciare a fare sul serio...

Ciao a tutti,
conosco il C poco (giusto qualche rimasuglio universitario) e non ci ho 
ai sviluppato progetti "veri". Ora però vorrei ripassarlo ed 
approfondirlo un po' meglio. Per questo vi chiedo qualche consiglio...
1) material didattico: Ho il libro di Kernighan+Ritchie e ho scaricato 
il videocorso "Thinking in C" di Alliston. Avreste qualche link con una 
documentazione esaustiva sulle librerie standard?
2) compilatore: premesso che sviluppo principalmente su WinXP e che non 
avrò una macchina Linux disponibile fino a Ottobre (almeno), potreste 
consigliarmi un compilatore per Win32 (so già che tutti direte gcc ;-) ) 
e linkarmi a relativa documentazione?
3) editor: vorrei iniziare a scrivere su file di testo e compilare 
manualmente da riga di comando (ecco perchè chiedevo la documentazione 
del compilatore), ma una volta superato questo step cosa mi consigliate?
Ciao e grazie in anticipo,
Giulio
-- 

 del compilatore), ma una volta superato questo step cosa mi consigliate?
I compilatori che ti ho segnalato sopra vengono tutti 
distribuiti con un IDE, quindi di editor non ce ne sarebbe 
bisogno, comunque eccone alcuni carini:
- 
http://www.pspad.com/en/
- 
http://notepad-plus.sourceforge.net/
- 
http://pnotepad.org/
Ciao.

 - 
http://pnotepad.org/
Ok, grazie per gli editor.
Per quanto riguarda i compilatori esiste qualcosa che funzioni *solo* da 
riga di comando, senza IDE "accoppiata"?
Ciao,
Giulio - in una fase "minimalista"
--
OnAir: Dream Theater - "The Dark Eternal Night"

 riga di comando, senza IDE "accoppiata"?
Direi tutti i summenzionati: per il compilatore VC++ prima
bisogna dare da riga di comando vcvars32.bat (o sistemarsi le
variabili d'ambiente una volta per tutte) e successivamente
invocare
cl.exe
con gli opportuni switch.
HTH
C:\>iao Angelo

 riga di comando, senza IDE "accoppiata"?
Certo, ovviamente tutti i compilatori che ti ho segnalato 
funzionano da linea di comando, l'IDE è completamente 
accessorio, ma se vuoi proprio un compilatore senza fronzoli 
puoi provare il Digital Mars che è veramente minimale:
http://www.digitalmars.com/
O anche gcc a questo punto.
Ciao.

 O anche gcc a questo punto.
si, questo lo avevo installato.
Ma dove trovo la documentazione (di entrambi) con tutti gli switch, le 
opzioni..etc...?
Grazie,
Giulio
--

 opzioni..etc...?
http://gcc.gnu.org/onlinedocs/
Ciao.

 opzioni..etc...?
http://www.digitalmars.com/ctg/ctg.html
Ciao.

 
http://gcc.gnu.org/onlinedocs/
Perfetto!
Ho visto che sotto Win funziona solo nell'ambiente di Cygwin - che avevo 
già installato tempo addietro. Peraltro sul sito di Cygwin ho trovato un 
link a MinGW che funziona anche "in autonomia". Qualcuno di voi lo ha 
usato? E' un buon "attrezzo"?
Grazie in anticipo e buona giornata,
Giulio
-- 

 Ho visto che sotto Win funziona solo nell'ambiente di Cygwin[...]
C'è anche DJGPP (
www.delorie.com
) che è il porting per DOS.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
Newsgroup: it.comp.lang.c
Titolo: Info su 386/486

Per favore:
Un sito in cui trovar materiale per studiare
l'architettura dei 386 e 486 per studiaccharre come organizzano la memoria,
come la gestiscono (paginazione, segmentazione e dimensioni varie...) ?
Grazie
--
bye bye by goldfix
---
Home Page: 
http://utenti.tripod.it/goldfix
---
E-Mail: 
gol...@tin.it

 come la gestiscono (paginazione, segmentazione e dimensioni varie...) ?
www.intel.it
--
Alessandro Monti



Newsgroup: it.comp.lang.c
Titolo: Array di struct e file,per favore

Dovrei realizzare un prog, che mi realizzi una rubrica telefonica su due
file.Su uno ci sono i nomi e gli indirizzi,sull'altro il numero di telefono
e il tipo di telefono.
Devo mettere delle struct direttamente nel file ,o devo mettere nel file un
array di struct.
Cosa comporterebbe una o l'altra scelta?
Differenze ,vantaggi?
Grazie,vi prego.


prima
di tutto devi avere una sottospecie di chiave per individuare il/i numeri
associati a quella persona.
seconda cosa ti serve un modo univoco per
individuare i dati nei file; un modo semplice č quello di usare tag cioč:
[TAG] [VALORE]
es:
NOME;VINCENZI;COGNOME;CHIANESE
NOME;pippo;COGNOME;topo
--------------------------------
Inviato via 
http://usenet.iol.it

Newsgroup: it.comp.lang.c
Titolo: PICCOLO AIUTO

Qualcuno e' in grado di scrivere una funzione ricorsiva che, dato un
albero binario, restituisca
il numero delle foglie e la somma dei loro valori?
Grazie
--
:-P
PZ "I'm a slave for you" & "Overprotected"

il numero delle foglie e la somma dei loro valori?
<CODE>
#include <stdio.h>
#include <stdlib.h>
typedef struct tag_node_t{
               int x;
               struct tag_node_t *left, *right;
        } node_t, *pnode_t;
void bintree_insert(pnode_t *root, int value)
{
     if (!*root)
     {
        *root = malloc(sizeof **root);
        (*root)->left = (*root)->right = 0;
        (*root)->x = value;
     }
     else
     if (value <= (*root)->x)
       bintree_insert(&(*root)->left, value);
     else
     if (value > (*root)->x)
       bintree_insert(&(*root)->right, value);
}
void bintree_count(pnode_t root,
                   int *leafcount, int *valsum)
{
     if (root)
     {
        bintree_count(root->left, leafcount, valsum);
        ++*leafcount;
        *valsum += root->x;
        bintree_count(root->right, leafcount, valsum);
     }
}
void bintree_write(pnode_t root)
{
     if (root)
     {
        bintree_write(root->left);
        printf("%3d;", root->x);
        bintree_write(root->right);
     }
}
int main()
{
    pnode_t root = NULL;
    int i, n, nleaves = 0, sum = 0;
    srand(time(0));
    n = rand() % 10 + 5;
    for (i = 0; i < n; i++)
    {
        bintree_insert(&root, rand() % 50);
    }
    bintree_write(root);
    bintree_count(root, &nleaves, &sum);
    printf("\n\nNumero di foglie : %d\n", nleaves);
    printf("Somma dei valori : %d\n", sum);
    getchar();
    return 0;
}
</CODE>
-- 
Andrea Laforgia
#exclude <windows.h>

Cattivo ;( A me i compiti non li fai mai!
Scherzo!
Grande come al solito Lafo!
Dome
--
------------------------------------------
Domenico Troiano
AI & 3D Coder TFS Project
www.panther3d.com
red...@panther3d.ath.cx
------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: banale manipolazione di stringhe, eppure... non va

*** post for FREE via your newsreader at 
post.newsfeeds.com
 ***
Guardate questo programma....
#include <stdio.h>
#include <string.h>
void main() {
        int i;
        FILE *stream;
        char buffer[256] = "";
        stream = fopen("output", "r");
        while (fgets(buffer, sizeof(buffer-1), stream) != NULL) {
                if (strstr("hidden", buffer) != NULL) printf("%s\n",
buffer);
        }
        fclose (stream);
}
mi serve per fare il parsing di una pagina html che ha un form con dei
campi hidden.
Vorrei che tra tutte le righe mi mostrasse solo le righe con la parola
hidden, e 
invece questo è l'output....
bash-2.03$ ./test 
hid
den
idd
dde
dde
dde
dde
dde
idd
bash-2.03$
come mai?
PS: le righe da selezionare sono solo 5.
-- 
Non c'è più forza nella normalità, c'è solo monotonia.
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 90,000 Newsgroups - 16 Different Servers! =-----

 if (strstr("hidden", buffer) != NULL) printf("%s\n", buffer);
i parametri sono invertiti. Da cambiare in:
if( strstr(buffer, "hidden") != NULL) ......
HTH