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

Ciao gente,
sapreste indicarmi dove posso trovare notizie per studiare
come si scorre una directory e si estrae l'elenco dei files?
Ci sono api per fare questo?
Nella libreria standard non mi pare ci sia molto che faccia al caso
mio :-(
Thx
Ps
Sto cercando su google nel frattempo


Infatti nella libreria standard le directory non sono proprio
menzionate. :-)
Per linux ti posso dire che le funzioni sono opendir/readdir/closedir
che lavorano su delle struct dirent. Un "man opendir" ti proporrà
anche qualche semplice esempio di come si usano.
Ciao!

 Per linux ti posso dire che le funzioni sono opendir/readdir/closedir
In particolare, Linux ha una chiamata di sistema (getdents) specifica
a Linux, e l'insieme {open,read,close}dir appartiene a POSIX, quindi
le trovi anche su altri sistemi UNIX.
C'e' anche scandir, che viene da BSD, e che e' candidata ad una
prossima versione dello standard POSIX, ma che si trova comunque su
Linux.


Grazie mille ragazzi, gentilissimi.
Sto cercando una soluzione per windows anche,
purtroppo a quanto pare il mio programma non sarà portabile :'(

 Sto cercando una soluzione per windows ...
Quando lavoravo con il borland C su MSDOS c'erano le funzioni 
findfirst/findnext che funzionavano in maniera analoga a opendir/readdir. 
Vanno bene anche per WindowsXP



Se veramente serve la portabilità, da quanto ricordo del vecchio 
compilatore Microsoft per DOS, non era complicato costruirsi dei 
wrapper per le funzioni POSIX.
Per parecchie delle funzioni non disponibili mi ero costruito una 
libreria per la compatibilità che mi facilitava notevolmente il 
porting da ambienti unix.
Naturalmente può essere valida anche la scelta inversa, cioè una 
libreria che implementi le funzioni di windows in ambienti diversi.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >


Si.

 wrapper per le funzioni POSIX.
Non solo: ora ci sono parecchie librerie che rendono Windows un sistema
POSIX compliant (e di conseguenza offrono le solite).
 
-- 
-riko

ingframin ha scritto:

dai un occhiata qua:
http://www.cs.cf.ac.uk/Dave/C/node20.html


Fantastico :-)
Non avevo trovato questo sito, grazie mille!
Peccato che sono solo per UNIX, da verificare se girano un po'sotto
windows o se si possono sfruttare in qualche modo per ricavarne una
versione win.
Grazie ancora :-)
Newsgroup: it.comp.lang.c
Titolo: compilatore C freeware

Salve,
vorrei sapere se esiste un compilatore C gratuito ed eventualmente
dove scaricarlo.
Grazie,
Michele

Salve,
qualcuno sa dirmi se esiste un compilator C in ambiente Windows, che
sia freeware?
Grazie,
Michele

Cerca DJGPP del GNU, un po' voluminoso da scaricare (una decina di mega
se vuoi una cosa carina e versatile) ma ne vale la pena...
qpsk wrote:

--
*******************************************************
  "C'e' un vecchio detto a riguardo delle reti che
  recita: i problemi di banda possono essere risolti
  con il denaro. I problemi di latenza sono piu' dif-
  ficili poiche' la velocita' della luce e' una cos-
  tante e non e' possibile corrompere Dio."
                                     David Clark, MIT
  Reply to 
bia...@maganet.net
*******************************************************

LCC-WIN32 è sicuramente il migliore!!!!
E' solo 1.6M comprende Editor, Editor di Risorse, Debugger, Gestore di
Versioni...
Provalo e fammi sapere.
l'indirizzo è 
http://www.cs.virginia.edu/~lcc-win32/

Newsgroup: it.comp.lang.c
Titolo: Estrazione Bit

Ciao,
ho una variabile intera
int ppp
in cui è codificata una informazione, del tipo
ppp = (a_0) + (a_1)*2^1 + (a_2)*2^2 + ... + (a_N)*2^N.
Dove i vari a_0, a_1,... a_N possono valere 0 o 1.
Ad esempio se tutti gli a_i sono nulli tranne a_3 che vale 1, ho
ppp = 8
Ogni a_i è associato a un informazione booleana, quindi se voglio leggere
ppp per ottenere l'informazione associata ad a_k (freganomene degli altri
a_i) devo guardare se il k-esibo bit è alzato o no.
Come posso farlo?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Come posso farlo?
if(ppp&0x08)
{
  //se si
}
else
{
  //se no
}
Ciao Jack

   
Example:
int            j;
uint32_t   var;
uint32_t   mask;
var=0x55AAC6B8;
for(j=0; j < 32; j++)
{
    mask= (1 << j); /* maschera per test bit ;-) */
    (var & mask) ? printf("Bit%u = TRUE\n", j): printf("Bit%u = 
FALSE\n", j);
}
brix

 }
Non ho capito:
voglio estrarre il k-esimo bit di ppp... dove entra in gioco "k"?


 voglio estrarre il k-esimo bit di ppp... dove entra in gioco "k"?
ti ho fatto l'esempio per a_3.
Quella cosa spugnosa all'interno della scatoal cranica usala insomma.
Ciao Jack
Newsgroup: it.comp.lang.c
Titolo: C'è un IDE per lo GNU C/C++?

Sapreste dirmi se esiste un ambiente di sviluppo integrato basato sullo GNU
C/C++ per windows 95?
Cerco anche informazioni in italiano su tale compilatore, dove le posso
trovare?
Grazie in anticipo a chi avrà la premura di venirmi in aiuto.
--
  ________
  \  /\  /
   \/  \/     T R X
   /\  /\    -------- (c)
  /  \/  \
  ^^^^^^^^

trovare?
specifico per win95 non credo (cioe` grafico) pero` se ti accontenti
del modo testo c'e` RHIDE, un ottimo IDE simile al Turbo C, ma con
piu` opzioni. se ti interessa in italiano guarda la mia home page e
trovi il file che ti serve per l'ultima versione: la 1.4 di settembre.
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343
http://members.tripod.com/%7Eranger_rg/

trovare?
[ti rispondo qui perche` le mail che ti ho mandato tornano indietro]
RHIDE molto probabilmente funziona anche con il compilatore cygnus,
visto che cerca `gcc.exe`, percio` basta avere tutti i file necessari
nel PATH e sei a posto.
PS: se utilizzi la traduzione nella mia home page, fammi sapere se
qualcosa non va

Newsgroup: it.comp.lang.c
Titolo: FILE e strutture

Salve a tutti, sto facendo questo prog ma c'č un problema: questa struttura
mi permette di copiare i nominativi in un file .dat, ma ne copia sono uno:
Se per esempio metto:
Nome: GIUSEPPE
Cognome: Pinco
Azienda: Pallino
me lo copia trancuillamente, se inserisco un'altro nominativo non me lo
copia:
Nome: Gianni
Cognome: Zio:
Azienda: Mail
quest'altro nominativo non lo copia:
Questo č il listato sviluppato:
#include<stdio.h>
#include<conio.h>
struct fornitore{
 char nome[20];
 char cognome[20];
 char azienda[20];
}p;
void main(){
 int scelta=-1;
 int n;
 FILE *fp;
 while(scelta!=0){
  printf("\nFORNITORI\n");
  printf("\n1. INSERIMENTO\n");
  printf("\n2. LETTURA\n");
  printf("\n0. FINE\n");
  printf("\nInserisci la scelta: ");
  scanf("%d",&scelta);
  switch(scelta){
  case 1:
   printf("\nNOME: ");
   gets(p.nome);
   gets(p.nome);
   printf("\nCOGNOME: ");
   gets(p.cognome);
   printf("\nAZIENDA: ");
   gets(p.azienda);
   fp=fopen("Fornitori.dat","a+");
   fwrite(&p,sizeof(struct fornitore),1,fp);
   fclose(fp);
   break;
  case 2:
   fp=fopen("Fornitori.dat","r");
   fseek(fp,0,0);
   if(fp==NULL){
    fclose(fp);
   }
   else
    for(;;){
     fseek(fp,0,1);
     n=fread(&p,sizeof(struct fornitore),1,fp);
     if(n==0)
      fclose(fp);
     break;
    }
    printf("\n--->NOME: %s\n",p.nome);
    printf("\n---->COGNOME: %s\n",p.cognome);
    printf("\n----->AZIENDA: %s\n\n",p.azienda);
    getch();
    break;
  }
 }
}
PS: Come posso fare una volta inseriti i nominativi a ritornare al menů
senza vedere quello che c'č sopra?

    fclose(fp);
Credo che l'errore sia qua:
tu apri il file, ci scrivi e lo richiudi; per ogni scrittura.
Cosě facendo ogni scrittura che fai la fai alla prima posizione.
Piuttosto evita di chiudere il file cosě il puntatore rimane fermo in
posizione dopo la scrittura precedente e non ci sono problemi ad aggiungere
campi.
Altrimenti usa la fseek.
Ciao
Claudio

    }
Manca una parentesi e quel fseek non serve.
for(;;) {
       n = fread(&p, sizeof(struct fornitore), 1, fp);
       if (n == 0) {
              fclose(fp);
              break;
       }
       printf("nome: %s\n", fp.nome");
       /* altre printf */
}
Come secondo parametro di fseek usa SEEK_SET, SEEK_CUR o SEEK_END Evita.
il numerino, rende piu` difficile capire quello stai facendo.
[1] Sulla gets valgono le solite considerazioni sulla mancanza di
controllo sull'input.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Tentare e` il primo passo verso il fallimento.
Homer J. Simpson

 Cosi` facendo ogni scrittura che fai la fai alla prima posizione.
"a" sta proprio per append. Il puntatore viene spostato alla fine del
file.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Al termine di un pranzo di nozze mi hanno dato un
amaro alle erbe cosi' schifoso che perfino sull'etichetta
c'era un frate che vomitava.

Oki scusa ^_^
Claudio
Newsgroup: it.comp.lang.c
Titolo: Per Andrea Laforgia

Ciao Andrea, ho notato che tra tutte le varie risposte che sono state date
alle varie domande, le tue sono quelle più tecniche e più preparate.
Solo per curiosità, mi diresti come ti sei preparato in maniera così
completa sulla programmazione in C?
Se non sono indiscreto, quanti anni hai?
Grazie e sono se sono stato impiccione..
P.S. Che significa OT?

 P.S. Che significa OT?
  OT significa /off/ /topic/ ossia "fuori argomento", "non attinente al
soggetto del gruppo" o, come si usava dire al tempo dei 2.400 baud,
"traffico inutile". Praticamente, un messaggio che non andava
indirizzato in questo newsgroup: le attestazioni di stima, ancorche`
meritate, come nel caso di Andrea, possono essere ragionevolmente
inviate per posta elettronica.
	Alla prossima,
		Marco

P.S. Che significa OT?
Off Topic ! :)
Fuori argomento.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
#exclude <windows.h>

inviate per posta elettronica.
E' per questo che dico che in questo gruppo c'e' tanta gente brava e
preparata. Ahime' ! :) ha ragione Marco ... :)


Aggiungo una cosa : per vedere gente realmente preparata, fate un
salto su it.comp.lang.c++ e leggete i commenti di Alex Martelli !
Dio mio : mi fa paura ! 


 Dio mio : mi fa paura !
E non solo, ma adesso ogni tanto scoccio pure qui...:-)
Alex

 
Infatti ho visto, con piacere, che sei tornato da queste parti, da
qualche tempo: ricordo che quando, qualche anno fa, ho iniziato a
frequentare il ng eri onnipresente, poi hai latitato... ;-)
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it

 frequentare il ng eri onnipresente, poi hai latitato... ;-)
Causa passaggio da C a C++, infatti spesso sono su
it.comp.lang.c++.  In questi giorni ho un po' piu`
tempo del solito, quindi sono tornato a dare un'occhio
(poi mi dicono che nell'ultimo standard C sono state
finalmente accettate alcune delle caratteristiche piu`
semplici e utili del C++, tipo le due che ho usato nel
mio tutorial su Win32 a 
aleax.supereva.it
, quindi sono
motivato:-).
Alex


26 anni? SOlamente? Te ne davo almeno 40.....
Accidenti, io che ne ho 30 mi sto picchiando
ancora con i puntatori a puntatori....
Complimenti sei davvero in gamba.
Igor Rossetti

Complimenti sei davvero in gamba.
Troppo buono ! .. ;)
Grazie,

Newsgroup: it.comp.lang.c
Titolo: Trasmettere strutture di dati

Sto facendo un programma che mi trasmette ( via socket ) da una macchina ad
un altra delle structe. Si tratta dei parametri della funzione ioctl.
Il problema e' che vorrei analizzare il caso di architetture diverse.
Se io ho una struct del tipo
struct A
{	
	char	a;
	int	b; 
};
Chiaramente questa ha una rappresentazione binaria completamente diversa su
intel e ( ad esempio ) alpha.
Come posso organizzare il codice in maniera da poter spedire queste
strutture ? Le strutture sono di molti tipi, mi serve solo un suggerimento
per come impostare il problema :
struttura -> codice_indipendente_dalla_archittettura
codice_indipendente_dalla_archittettura -> struttura
( Poi come trasportare il "codice_indipendente_dalla_archittettura" da una
macchina all'altra *non* e' un problema )
L'unica cosa che mi viene in mente e' associare ad ogni struttura ( in
particolare al suo codice-ioctl ) due vettori, uno che indica il tipo di
dato, l'altro che indica l'offset. Pero' lo vedo un metodo faragginoso e
complicato da manutenere.
Grazie per l'attenzione.

 metodo faragginoso e complicato da manutenere.
  L'unico modo portabile per trasferire dati da piattaforme diverse e`
il convertirli in testo. In questo modo potrai ovviare a molte
difficolta`, non ultima l'/endianity/ diversa.
	Alla prossima,
		Marco


Non c'e' bisogno di reinventare l' acqua calda; usa le apposite funzioni come htons
(o WSAhtons)  &co. Ad esempio, htons converte un intero da 16 bit da formato host
a formato network. Nel programma che riceve i dati, usa nstoh per riconvertire il dato da
formato network a formato host. Cerca nell'help del tuo compilatore per maggiori dettagli.
Newsgroup: it.comp.lang.c
Titolo: ciclo for, su di un array 2d, dato il puntatore al primo elemento

Ciao a tutti!
 
sono Pietro, questo è il mio primo messaggio qui in lista. Ho iniziato da poco a studiare e scrivere il C. Scusate quindi se la mia domanda dovesse essere banale, ringrazio fin da subito chi volesse indicarmi del buon materiale da leggere e studiare.
 
Ho scritto questo codice:
 
https://gist.github.com/2429080
 
 
Che per funzionare funziona... ma non sono convinto sia il modo più elegante per fare questa cosa... e vorrei capire se c'è un modo migliore, più chiaro, sintetico e pulito per farlo.
 
Due parole sul codice, ho definito una struct, a cui gli passo il puntatore al primo elemento di un array a 2 dimensioni, in questo modo, posso evitare di
dichiarare le dimensioni all'interno della struct, dandomi la possibilità di usarla anche con dimensioni diverse, non definite a priori. 
 
Solo che poi, quando voglio accedere all'array, uso una tecnica abbastanza contorta:
definisco due variabili fittizie, in modo da usarle insieme con sizeof
per l'algebra dei puntatori.
 
la cosa appunto funziona... però, da inesperto, mi sembra poco
leggibile e parecchio contorta, è solo una mia impressione? o secondo
voi c'è effettivamente un modo più elegante?
 
Grazie per i vostri suggerimenti ed idee.
 
Buon pomeriggio
 
Pietro

 voi c'è effettivamente un modo più elegante?
 
Assolutamente contorta :)
 
Ti riporto il metodo corretto, ciao.
 
===============================================
 
#include <math.h>
#include <stdio.h>
 
typedef struct __move__ {
     short int mv0;
     short int mv1;
     short int dir;
     double dist;
} move;
 
move movements[8] = {
     { 1, 1, 1, M_SQRT2},
     { 1, 0, 2, 1},
     { 1, -1, 3, M_SQRT2},
     { 0, 1, 4, 1},
     { 0, -1, 5, 1},
     {-1, 1, 6, M_SQRT2},
     {-1, 0, 7, 1},
     {-1, -1, 8, M_SQRT2}
};
 
int main()
{
     int i;
 
     for (i = 0; i < sizeof(movements) / sizeof(movements[0]); i++)
         printf ( "%d) mv0=%d mv1=%d\n", i, movements[i].mv0, 
movements[i].mv1);
 
     return 0;
}
 
===============================================

 Ti riporto il metodo corretto, ciao.
 
Grazie, molto meglio! non ci avevo proprio pensato, grazie.
 
Pietro
Newsgroup: it.comp.lang.c
Titolo: Dialogo COM1

Ciao a tutti!
Avrei bisogno di una mano per un lavorino che devo fare:
devo scrivere un programmino che mi permetta, tramite COM1 di sapere se un
circuito esterno č aperto o chiuso (leggasi passa corrente).
Dovrei fare tutto da 0.
Ho cercato lo schema di una porta COM1
(
http://www.tuttoreti.com/seriale.htm
).
Solo che di programmazione ne so davvero poco :-(
Mentre con il saldatore me la cavo abbastanza bene.
Quindi... Qualcuno conosce un link ad un sito di elettronica o qualche cosa
del genere che mi permetta di costruire un circuito da collegare alla COM1?
E poi... un link per una funzione che faccia il check della COM1 e mi
restituisca 1 se il circuito č chiuso e 0 per quello aperto?
Il tutto sotto linux.
Grazie dell'attenzione!
Ciao, Stefano
PS: Scusate il cross-post, ma l'argomento riguarda entrambi i NG :-)

 Il tutto sotto linux.
No, it.comp.lang.c non c'entra, al max it.comp.os.linux.development, 
dato che il C standard non sa nulla di COM1 e nulla di linux. ;)
-- 
/**
  * 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
  */

 Il tutto sotto linux.
Per la programmazione non so aiutarti, per la parte elettronica forse
potresti usare un mio circuito rivelatore di passaggio di corrente che trovi
nella pagina in firma, al posto del led puoi collegare la parte led di un
fotoaccoppiatore.
Ciao
                             Celso
.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.
EMAIL: 
aisir...@econophone.ch
H.P.: 
http://www.chnet.net/aisi/
pagina d'elettronica:
http://www.ticino.com/aisi/elettronica/
per rispondere in privato elimina TOGLI
.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.


Questo e' il massimo, sono riusciti a tradurre in italiano tutti i segnali
della RS232.
Cosi' se uno ha confusione in testa, dopo aver letto queste specifiche
cambia direttamente mestiere :-)
Ciao
Giuseppe
Newsgroup: it.comp.lang.c
Titolo: [OT] Flow chart da C

Salve a tutti,
esiste una utility in grado di estrapolare dei flow chart da codice C?
Grazie per la risposta
-- 
Posted from  [213.213.71.66] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie per la risposta
Prego per la domanda.
Bye,
 Emmanuele.
-- 
I ... Owe ... You ... Pain! -- Willow, "Tough Love"
Italian Buffy Resource Site (Beta) - 
http://www.ibrs.f2s.com
GnuPG Key ID: 0xA4320FF4
GnuPG Key FP: 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 puoi sempre usarla come porta popcorn nelle feste.
ROTFL
E poi dicono che gli informatici non hanno il senso dell'umorismo... ;-)
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

 E poi dicono che gli informatici non hanno il senso dell'umorismo... ;-)
Oh, ma a ben guardare, di senso dell'umorismo ne hanno tanto. Alcuni
prootti, poi, sono li` a dimostrarlo. O quello, oppure il sadismo di
alcune persone.


esiste una utility in grado di estrapolare dei flow chart da codice C?
Dipende che intendi per flow-chart.
Se per flow-chart intendi uno schema sommario delle
operazioni compiute nel codice, si' e' possibile estrarlo e
ci sono programmi che lo fanno.  E' possibile estrarre, in
particolare la sequenza di chiamate di funzione, le
variabili utilizzate, ecc... ecc...
Questi tool servono, molto spesso, per l'autodocumentazione
del codice sorgente.  Con il Microsoft C di una decina
d'anni fa veniva distribuito un programma chiamato CFlow che
faceva esattamente questo.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it

E poi dicono che gli informatici non hanno il senso dell'umorismo... ;-)
Senso di che ?

Newsgroup: it.comp.lang.c
Titolo: Fermare l'esecuzione di un programma

Salve ho letto i vecchi post ma non mi sembra ce ne
sia qualcuno al riguardo:
qual'è il comando per far bloccare l'esecuzione di un
programa in un determinato punto??
Mi serve qualcosa come l' HALT del pascal.
Grazie.


I'm not prejudiced, I hate everyone equally.

TommyGun wrote:

Pensi che la funzione exit() possa esserti utile?
<cite src="man:exit">
EXIT(3)             Linux Programmer's Manual             EXIT(3)
NAME
        exit - cause normal program termination
SYNOPSIS
        #include <stdlib.h>
        void exit(int status);
DESCRIPTION
        The  exit() function causes normal program termination and
        the value of status is returned to the parent.  All  func­
        tions registered with atexit() and on_exit() are called in
        the reverse order of  their  registration,  and  all  open
        streams are flushed and closed.
RETURN VALUE
        The exit() function does not return.
CONFORMING TO
        SVID 3, POSIX, BSD 4.3, ISO 9899
SEE ALSO
        _exit(2), atexit(3), on_exit(3)
GNU                       April 2, 1993                         1
</cite>
-- 
Baci,
Mony

 ha scritto nel messaggio
news:X3hp8.36493$pT1.1...@news1.tin.it...

Non so cosa faccia l'HALT...ma tu per bloccare intendi chiudere
l'applicazione o far rimanere in attesa il prog fino alla, per esempio, la
pressione di un tasto?
Maurizio

 wrote in message
PRkp8.97764$1S3.3...@twister1.libero.it...


 Intendo bloccare l'applicazione.
aspettare la pressione di un tasto ?? 
getchar();
aspettare un certo numero di secondi ??
#include <unistd.h>
unsigned int sleep(unsigned int seconds);
uscire dall'applicazione ??
exit (1);
ciclo infinito ??
while (1)	;
se nessuna di queste va bene, dici cosa vuoi fare, che ancora non si e'
capito ...
ciao ...


 Intendo bloccare l'applicazione.
Scusa se te lo dico ma ancora non si e' capito cosa vuoi...
non puoi spiegare cosa in tendi con "come si fa a bloccare l'esecuzione di
un programma" con la frase "intendo bloccare l'applicazione" e'
*leggermente* ambiguo....
Maurizio
Newsgroup: it.comp.lang.c
Titolo: un chiarimento C e protocolli

Ciao
che differenza c'e' tra C e c++?
molti mi hanno detto che c++ e' meno ostico come approccio rispetto al C...
il mio problema e' che sto' iniziando a studiare il protocollo tcp/ip, ma
effettivamente, uno dei modi per mettere a frutto le conoscienze e' saper
programmare...
tempo fa avevo iniziato a dare un' occhiatina al visual basic, ma sembra a
detta di alcuni che sia un linguaggio "limitato"
qualcuno di voi usa le proprie conoscenze di C o C++ per creare programmi che
sfruttano i protocolli?
vorrei eventualmente scambiare qualche informazione, posta o chat...
grazie e buon lavoro a tutti
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG








Per effettura questo io ho
utilizzato il compilatore borland Builder (Esteticamente simile al visual-
basic) come linguaggio puoi provare sia con il C che con il c++
Tommy
--------------------------------
Inviato via 
http://usenet.iol.it
Newsgroup: it.comp.lang.c
Titolo: ancora problema struttura

Salve
ho ancora un altro problema con la struttura:
typedef struct _list {
struct _list * next;
int x;
} *list;
allora:
se io in questa stesso struttura voglio un array di elementi x, anzichè un
singolo elemento, che faccio, la dichiaro così ?
typedef struct _list {
struct _list * next;
int *x;
} *list;
E premettiamo che ho già allocato l'array di list
list *L=calloc(ecc ecc)
quando devo allocare l'array di elementi x faccio così ?
L[0]->x=calloc(2,ecc ecc) ?
e per accedereado ogni elemento x posso fare così ?
L[0]->x[0]=3
L[0]->x[1]=4
grazie per l'aiuto che mi state dando.

giulio wrote:
Ti faccio un riassunto di quello gia' detto, spiegando in dettaglio le 
differenze, ma e' l'ultima volta :P
Allocare dinamicamente un singolo elemento e' contettualmente uguale ad 
allocare un array di 20431243 elementi. L'unica differenza e' che nel 
secondo caso devi allocare 20431243 elementi anziche' 1.
La sintassi e' sempre la stessa:
puntatore_array[indice].campo
Non c'e' piu' nulla da allocare.
Una nota: non ti conviene dichiarare un tipo "puntatore a" e lasciare che 
sia l'utente a utilizzare espressamente il puntatore, come avviene nel caso 
della struttura FILE.
Forse tu vuio allocare un array di puntatori a lista, per poi poter 
deallocare un singolo elemento. Questo lo ottieni facendo (nota che la 
struct te l'ho cambiata in base alla nota di cui sopra e per farti capire 
melgio i livelli di puntatori necessari):
    typedef struct _list {BLA BLA] list;
    list ** l;
    l = malloc(10 * sizeof(list *));
    for (i=0; i<10;i++) {
        l[i] = malloc(sizeof(list));
        /* inizializza la lista come ti pare */
    }
A questo punto la sintassi per accedere agli elementi diventa:
    puntatore[indice]->campo
oppure (equivalente, ma "sviluppato" per quando riguarda l'accesso al campo 
della struttura):
    (*puntatore[indice]).campo
-- 
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: Ancora while!

In questo piccolo programmino, ho dovuto aggiungere n=-n prima del ciclo di
while  per riuscire a farlo girare senza errori. Qualcuno mi può spiegare
perché? E' possibile eliminare n=-n per ottimizzare il programma. L'
equivalente do-while funziona benissimo senza questo piccolo espediente
perché? Grazie, Carlo.
 #include<stdio.h>
main(){
int n;
printf("Inserisci un numero positivo: ");
 n=-n;
 while(n<0)
 {
  scanf("%d",&n);
  if(n<0)
  printf("Devi inserire un numero positivo! Ripeti: ");
  }
  printf("Hai inserito %d, un numero positivo.", n);
 }

In questo piccolo programmino ho dovuto aggiungere n=-n prima del ciclo di


 }
Sebbene un ciclo while ed un do-while siano uguali dal punto di vista
della potenza espressiva, il ciclo while si usa quando il contenuto del
ciclo potrebbe non essere eseguito, mentre il do-while quando si vuole
che il codice venga eseguito almeno una volta.
Nel ciclo while la verifica della condizione avviene _prima_
dell'esecuzione del ciclo stesso e quindi il ciclo potrebbe non essere
eseguito affatto. Nel tuo caso dovresti assegnare un valore negativo
fittizzio ad /n/ (es. -1) per forzare la prima esecuzione. Oppure, e
forse sarebbe piu` chiaro da leggere, scrivere un ciclo do-while:
do {
        scanf("%d", %n);
        if (n < 0)
                printf("...");
        else
                printf("...");
} while(n < 0);
Io preferisco questa soluzione visto che la lettura del dato deve essere
fatta almeno una volta.
Luca
-- 
Home: 
http://kronoz.cjb.net
Regole per la felicità:
1. Sii soddisfatto di quello che hai.
2. Assicurati di avere tutto.

Luca
Altrimenti basta acquisire una volta fuori il ciclo e poi una volta
prima di uscire dal ciclo while :D

 prima di uscire dal ciclo while :D
Giusto - e' sempre bello complicarsi la vita ;D
-- 
Mat/tia Belletti             - Graduate student @ 
cs.unibo.it
ICQ: 33292311                - email: 
mbel...@cs.unibo.it
IRC: RedGlow                 - site(s): 
http://mbellett.web.cs.unibo.it/
Red...@jabber.linux.it/Gaim
 - Linux user 299762 @ machine 213003

Giusto - e' sempre bello complicarsi la vita ;D
Se uno è masochista che ci vuoi fare :D L'importante è che capisca la
differenza è torni sulla via maestra :P
Buona Domenica ^___^

 perché?
Perche' altrimenti non farai mai lo scanf!!
Perche' invece non usi un ciclo do-while?
 int n;
 printf("Inserisci un numero positivo: ");
 do{
    scanf("%d", &n);
    if(n < 0) printf("Devi inserire un numero positivo! Ripeti: ");
    }while(n < 0);
 printf("Hai inserito %d, un numero positivo.", n);
No? e' cosi' semplice che la mia coscenza non ne risulta turbata a
scriverlo.. :)
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: Libro C - windows

Per programmare in windows con il C va bene se mi compro il libro
"Programmare Windows" V edizione di Charles Petzold ?
Mi aspetto che mi insegni come disegnare l'interfaccia grafica e come creare
i vari controlli dato che conosco il C standard. Che ne pensate?
Scusate l'OT, ma è importante.
Grazie

 Romanzina /off
<rAmanzina on>
visto che le fai tu... =)...
si chiamano rAmanzine e non rOmanzine...
=)
</rAmanzina off>
Newsgroup: it.comp.lang.c
Titolo: Stampare

Come scrivere un programma in c che permetta la stampa ???
quale/i funzioni di libreria utilizzare, ho il borland ma eventualmente mi
procuro altro..



 Una soluzione potrebbe essere :
     fprintf(stdprn,"Questa e' una prova\n") ;
ma non e' detto che funziona .

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

Non funziona, almeno col borland 4.5
Infatti non tutte le stampanti riconoscono tali comandi . 
Io per esempio ho 2 Epson una ad aghi ed una a getto e non ho alcun
problema . Al lavoro ho una lexmark laser e non c'e' verso di fargli
stampare niente in Dos . 
Se questo e' il tuo caso allora devi per forza appoggiarti ai driver
di windows se e' quel sistema operativo che usi .
ciao

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

Newsgroup: it.comp.lang.c
Titolo: About [OT]

Non riesco a capire come faccio a distinguere un discorso OT da uno che non
è OT. Ad esempio adesso vorrei chiedervi come faccio in C standard a
modificare il registro di configurazione di Windows. Voi potreste
rispondermi che esistoni ng che parlano di programmazione win32 ma io vi ho
chiesto come sì fà questa cosa in C ed il C è argomento del ng.
Se non sono OT rispondetemi per favore.
Ciao.
SIGN: Null Pointer Assignment.

<X> wrote in message NRS9Mv6r$GA...@news-02.uni.net...

E qui bisogna interpretare! ;-) Se intendi che API devo chiamare per
modificare una determinata chiave del registro, è chiaro che questo con il C
standard non c'entra molto, e persone (tipo me ;) che di programmazione di
API ne sanno proprio poco non sa come risponderti.
Se però tratti il registro come un file generico, (di cui dovresti conoscere
il formato)  puoi accedervi con le funzioni standard di lettura/scrittura,
(fread()/fwrite() o fscanf()/fprintf())
cercare la chiave che ti interessa e poi scrivere il nuovo valore.
Ma visto che fai una applicazione nettamente platform specific io lascerei
perdere il C standard e utilizzerei l'API adeguata.
Di più nin' zò!
ciao ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

 chiesto come sì fà questa cosa in C ed il C è argomento del ng.
La risposta è molto semplice: non si può fare.
EMG

modificare il registro di configurazione di Windows.
Capisco che ti preme risolvere il tuo problema, pero' in questo caso
un ng sulla programmazione per Windows puo' davvero aiutarti.
Tieni presente che molti ambienti di sviluppo sotto Windows ti mettono
a disposizione le strutture necessarie per accedere comodamente al
registro (vedi Borland C++ Builder).
Il C Standard, proprio perche' standard, non contempla la
programmazione per Windows e tutti gli aspetti ad essa correlati,
cosi' come per ogni ambiente specifico.

Newsgroup: it.comp.lang.c
Titolo: cerco libro

cerco un libro che spieghi bene il linguaggio C C++
ciao e grazie


Talking about music is like dancing about architecture.
                -- Laurie Anderson
Newsgroup: it.comp.lang.c
Titolo: [Urgente] Aprire tutti i file in una directory

Ciao a tutti, scusate il x-post, ma sono tiratissimo coi tempi!
Ho una directory, che contiene altre sottodirectory, ognuna delle
quali ha un certo numero di file.
Ebbene, io vorrei gardare dentro tutti questi file. Come faccio in
C/C++? Che funzioni di libreria mi servono?
Se sono due righe, sareste così gentili da scriverle?
Grazie mille a tutti, ciao
giulio
Per favore togliete "!RemoveMe!" dall'indirizzo per rispondere via email
Please remove "!RemoveMe!" from the address to email me

manca il Sistema operativo!
Unix & linux & BSD č una cosa,
Windows un'altra, DOS un'altra,
Mac un'altra ancora
--
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/
      -- the one and only --     e-mail : 
blak...@tiscalinet.it
                                ICQ    : 59394345
The UNIX Guru's View of Sex:
$unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

>manca il Sistema operativo!
Scusate, non sapevo...
Io lavoro sotto WinNT4, ma l'applicazione è console (linea di
comando), quindi non so... probabilmente la risposta è DOS.
Grazie a tutti, giulio


Grazie anche a Fausto, ho trovato le funzioni chiave che cercavo:
opendir, readdir, rewinddir, closedir,
oltre a molte altre interessanti funzioni collaterali:
findfirst
findnext
getftime
setftime
chdir
getcurdir
getcwd
getdisk
mkdir
rmdir
setdisk
Bene, grazie ancora, ciao!


 C/C++? Che funzioni di libreria mi servono?
Dipende dal tuo sistema e dal tuo compilatore. Cerca funzioni tipo
findfirst()/findnext().
EMG

 C/C++? Che funzioni di libreria mi servono?
Non fai, in C o C++ portabile, cioe` che funzioni su tutte le
piattaforme.  I due linguaggi e le loro librerie standard non
coprono questa problematica.
Chiedi sul gruppo dedicato alla specifica piattaforma di tuo
interesse, ad esempio it.comp.programmare.win32.
Alex
Newsgroup: it.comp.lang.c
Titolo: DLL con WATCOM

Salve a tutti,
sto cercando di creare una DLL usando OpenWatcom v.1.1., ma non riesco
ad esportare la funzione che mi interessa.
Il mio intento e' quello di creare una DLL WIN32; devo esportare la
funzione UserDefinedSurface.
Quando al linker do l'istruzione di esportare UserDefinedSurface_, mi
dice "UserDefinedSurface is an undefined reference".
Occhio: WATCOM non sembra che supporti i files .def per esportare le
funzioni !
Notare che dando al linker le medesime istruzioni, per altre
funzioni definite all'interno della DLL, non ottengo un messaggio di
errore, e la DLL viene creata senza errori apparenti (tuttavia non me
ne faccio niente).
Dove sbaglio ?
Grazie a chi mi rispondera'.
mt
Il sorgente e' il seguente:
/*-------------------------------*/
#include <windows.h>
#include <math.h>
#include <string.h>
#include "usersurf.h"
int APIENTRY UserDefinedSurface(USER_DATA *UD, FIXED_DATA *FD);
int GetCellCenter(int nx, int ny, double wx, double wy, double x,
double y, double *cx, double *cy);
int Refract(double thisn, double nextn, double *l, double *m, double
*n, double ln, double mn, double nn);
int WINAPI DllEntryPoint(HINSTANCE hInstance, DWORD fdwReason, PVOID
pvReserved)
        {
   return TRUE;
   }
/* this DLL models a lens array surface type */
int APIENTRY UserDefinedSurface(USER_DATA *UD, FIXED_DATA *FD)
        {
   int i, nx, ny, error, miss_flag;
   double p2, alpha, power, a, b, c, rad, casp, t, zc;
   double wx, wy, cx, cy, x, y, z;
   switch(FD->type)
        {
      case 0:
/* segue lungo codice con vari case, fino a... */
      }
   return 0;
   }
/*------------------------------------------------------*/
/* il file .h e' scritto cosi': */
/*------------------------------------------------------*/
typedef struct
        {
   double x, y, z;     /* the coordinates */
   double l, m, n;     /* the ray direction cosines */
   double ln, mn, nn;  /* the surface normals */
   double path;        /* the optical path change */
   double sag1, sag2;  /* the sag and alternate hyperhemispheric sag
*/
   double index, dndx, dndy, dndz; /* for GRIN surfaces only */
   char string[20];    /* for returning string data */
        }USER_DATA;
typedef struct
        {
   int type, numb;     /* the requested data type and number */
   int surf, wave;     /* the surface number and wavelength number */
   double wavelength, pwavelength; /* the wavelength and primary
wavelength */
   double n1, n2;      /* the index before and after */
   double cv, k;       /* the curvature and conic */
   double param[9];    /* the parameters 1-8 */
   double xdata[201];  /* the extra data 1-200 */
   char glass[20];     /* the glass name on the surface */
        }FIXED_DATA;
/*------------------------------------------------------*/

 wrote
prova a scrivere su un NG di programmazione per win32, su questo NG il tuo
topic e' OT.
Tommy

...

Grazie per la segnalazione.
mt
Newsgroup: it.comp.lang.c
Titolo: Ricerca di numeri in una sequenza...

Non so se mi sono spiegato bene nel topic allora vi faccio un esempio:
Cerco un programma o un modo per crearlo che faccia questo:
su un file di testoscritto così:
1   2   3   4   5
2   3   4   5   6
3   4   5   6   7
.................
4   2   1   3   5
e via dicendo, mi deve individuare le righe contenenti gli stessi
numeri, anche non nello stesso ordine... come nell'esempio nella prima
e nella quinta riga ci sono gli stessi numeri, ecco io vorrei che mi
facesse notare questa cosa e impostando un numero massimo mi indichi
quali serie di numeri non sono presenti nel documento...
E' fattibile? io non ne ho proprio alba... e non so nemmeno se ho
chiesto nel posto giusto...
Spero che qualcuno possa aiutarmi, magari indicandomi un'utility già
pronta, faccio notare che i numeri sono separati tra di loro sulle
righe da tabulazioni.
Saluti, Alen


Che ci sia gia' una utility pronta per questo problema cosi' bizzarro
mi sembrerebbe strano. Ma forse dipende dal fatto che non capisco
a cosa ti serve fare la cosa che vuoi fare ...
Il problema e' piuttosto facile da risolvere,
anche se non hai specificato alcuni dettagli che
influenzerebbero parecchio la soluzione da adottare:
1) il "numero dei numeri" in ogni riga e' costante
e noto a priori ? Quanto puo' valere al massimo ?
2) i numeri in ogni riga sono sempre "piccoli" come
quelli dell'esempio o possono essere arbitrariamente grandi ?
3) i numeri possono ripetersi all'interno della stessa riga
(come nella riga 2 dell'esempio sopra) ?
Se i numeri in una riga sono in numero fisso, diciamo K,
(nell'esempio era K=5)
allora una soluzione scema consiste in:
1) Determinare, scorrendo il file una prima volta quante linee
ci sono, diciamo nL. (volendo si puo' usare una soluzione
piu' dinamica che legge il file 1 volta sola, ma questa e'
piu' semplice)
Ottenuto nL, allochi un array S[] di dimensione nL di struct.
Ogni
struttura contiene un array V[K] di interi
(che conterra' gli interi di una riga)
e un intero nR che mi serve per numerare le righe.
Poi leggi una riga alla volta del file, determini i K interi
della riga corrente e li metti in ordine crescente (usando qsort 
opportunamente) nella struttura corrente S[i].V[0] .... S[i].V[K-1],
per i che va da 0 a nL. Memorizzi contestualment il numero di riga
corrente (diciamo i) nel campo nR della struct.
A questo punto, per effetto dell'ordinamento, se due linee contenevano
gli stessi numeri, allora i vettori V[] corrispondenti saranno uguali.
Ora, usando qsort con un altra funzione di confronto, ordini gli 
elementi di S rispetto al contenuto di V[] in modo da ottenere che
gli elementi di S con lo stesso V diventino contigui.
A questo punto scandisci S una volta sola e quando trovi vettori V in
sequenza uguali, puoi stampare il numero di riga originario delle
righe uguali (che avevi memorizzato in nR e che si e' spostato insieme
ai V quando hai ordinato S).
Per l'altra cosa (dire quali righe non ci sono) la cosa e' leggermente
piu' complicata.
Comunque prova a buttare giu' il tuo programma e poi vediamo.
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: malloc

Perchč usare malloc? Se non sbaglio trova e riserva una sezione di memoria
della dimensione data e da come valore di ritorno il suo indirizzo. Ma non č
lo stesso che creare un array?

 lo stesso che creare un array?
Gli array si definiscono a compile time, una malloc puoi farla
all'occorrenza durante l'esecuzione del programma.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


quindi per fare un esempio posso usare un array come buffer e poi fare
qualcosa come
//*******************************
  char buffer[100], *str;
  scanf("%s",buffer);
  str=malloc(sizeof(char)*(strlen(buffer)+1));
  strcpy(str,buffer);
//*******************************
e poi usare ancora il buffer per tutte le altre stringhe. giusto?

.:'DevarajA':. wrote:

Gli array hanno una dimensione statica definita a compile time, malloc 
invece definisce la dimensione a runtime. Esistono poi importanti 
differenze su come e dove viene allocata la memoria nei due metodi.

 wrote in message
news:070Wc.169986$
5D1.8...@news4.tin.it

Io userei un riga per ogni definizione e non metterei sizeof(char)
visto che per definizione e' 1 (qualunque sia la dimensione del byte).
Ma per il resto direi che fila.


 invece definisce la dimensione a runtime.
Waiting for C99.... :))

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

ciao!
volevo chiedere se avete per caso il codice di bantumi in c
e se potreste passarmelo!!!
grazie mille
fatemi sapere
laura 

e se potreste passarmelo!!!
http://www.cppfrance.com/codes/BANTUMI_35250.aspx
http://cmancala.sourceforge.net/
http://shh.thathost.com/pub-unix/#Mancala
http://www.blueparrots.com/blue3.html
 il login e' nella homepage
Ma soprattutto:
http://www.google.com/
Newsgroup: it.comp.lang.c
Titolo: istruzione Clear screen

Grazie a tutti per le precedenti risposte.
Tempo fa ho utilizzato una funzione che puliva lo schermo ma non la ricordo più.
Si trovava nella <stdlib.h>.
qualcuno la ricorda?.
Grazie
Sergio

 qualcuno la ricorda?.
la funzione è clrscr() ma non è standard quindi...
-- 
Rhymes
rhy...@NOSPAMmyself.com

 ha scritto nel messaggio
news:pan.2003.01.26....@dot.com...


clrscr() č in conio.h
...con i compilatori che la supportano...
-- 
Andrea Laforgia
#exclude <windows.h>

 ha scritto nel messaggio
news:6daea39c.03012...@posting.google.com...

system("cls");
Ciiips
Aragorn
--
FAQ non ufficiali K7S5A:
http://www.holyword.it/aragorn/ecs_faq.htm
Newsgroup: it.comp.lang.c
Titolo: Problemino con ciclo For.

Ho il seg. ciclo e vorrei stampare a video i valori dell'array, ma ottengo
invece dei numeri a caso1
Che c'è che non va?
#include <stdio.h>
int main()
{
      int conta;
      int array[10];
      for (conta=0; conta<10 && array[conta]!=0; conta++)
      printf("%d", array[conta]);
      system("PAUSE");
      return 0;
}
Grazie mille e buon lavoro!

 Che c'è che non va?
Se tu non lo inizializzi l'array , difficilmente ti potrà uscire qualcosa di
decente.......

Che c'è che non va?
Se nell'array non ci metti niente, prima di stampare i
valori, e' difficile che il programma stampi qualcosa di
sensato.

       scanf("%d", array[conta]);
/* Ora hai messo qualcosa nel tuo array */
for (conta=0; conta<10 && array[conta]!=0; conta++)
      printf("%d", array[conta]);
/* ORa lo puoi scandire...e farci quel che ti pare... */


Che c'è che non va?
che il tuo array è pieno di numeri senza senso finchè tu non ci scrivi
qualcosa.
al posto di int array[10]; metti:
int array[10] = {4,3,1,5,6,8,7,9,2,10};
in questo modo riempi l'array con 10 elementi e te li visualizzerà
nell'ordine in cui li vedi, oppure fai un altro ciclo in cui li leggi
da tastiera
scanf("%d",&array[conta]);

 ha scritto nel messaggio
news:oIrQ7.264637$sq5.12...@news.infostrada.it...

Ciao se incollo e compilo ed eseguo questo codice, mi appare il prompt
vuoto, se digito ad esempio un numero mi appare un errore  che dice Access
Violation....ecc..ecc...la memoria non poteva essere Written. Quindi penso
che vada a scrivere in qualche zona proibita della memoria.

 > >       scanf("%d", &val );
                array[conta]=val;
                }
ecco ora dovrebbe andare meglio....
Fly

ecco ora dovrebbe andare meglio....
scanf("%d", &array[conta]);
In ogni caso, dopo scanf() va svuotato il buffer di
tastiera, altrimenti il nostro amico leggera' un numero si',
un numero no.
Newsgroup: it.comp.lang.c
Titolo: Occorre prima studiare poi ...

Caro cingar quello che tu dici non mi sembra al quanto vero. Se uno
non sa a priori la dimensione di una matrice basta scrivere una
funzione che abbia come parametro formale un parametro del tipo
puntatore a puntatore. Nel programma che chiama questa funzione basta
dichiarare un puntatore a punatore e assegnare un'area dinamica....non
capisco perchè le funzioni del nostro amico ritornano un valore del
tipo **complex quando lui già gli passa la matrice. quindi le funzioni
dovranno essere void e non avere un return A. Nel main ovviamente il
nostro amico dovrà creare una matrice in modo dinamico....se vuoi una
funzione che fa ciò chiedi pure..

 se vuoi una funzione che fa ciò chiedi pure..
Grazie, io sono a posto così.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 dovranno essere void e non avere un return A.
"Dovranno" ? pardon, ma dove sta scritto ?
L'abitudine di restituire il puntatore sul quale si lavora è tipica, in C.
Quasi tutte le funzioni della libreria standard che lavorano sulle
stringhe, ad esempio, lo fanno.  A volte è molto utile.  


siete dei mocciosi! i ng servono per imparare e confrontarsi, non per
litigare. Se Tizio ha detto una cazzata non esiste alcun motivo di
incazzarsi oppure offendere....
Newsgroup: it.comp.lang.c
Titolo: Problema con LISTE e FILE

Ciao ragazzi,
devo preparare un progetto in cui dato un file con le coordinate di vari 
segmenti, divisi per riga, devo riconoscere, partendo dal primo, quali 
segmenti fanno parte della stessa figura. Nell'esempio ho 3 figure.
Voglio usare Liste e allocazione dinamica.
Il mio problema è che non mi ricordo bene come si usano le liste, 
essendo parecchio tempo che non uso C.
Nello specifico non so, o meglio non riesco bene, come creare una lista 
leggendo il file e ctalogando le coordinate per riga in una struct che 
ha valori x1, y1, x2, y2 per poi nella seconda riga catalogarle nella 
struct successiva.
Ho pensato di usare fscanf (nome_file, "%d %d %d %d", &x1, &y1, &x2, 
&y2) ma non so se è giusto.
Dopo che ho tutti gli elementi della lista come faccio a confrontare x1 
e y1 del primo con gli x1 e y1 degli altri? Non so come dirgli di 
aumentare un contatore che passi da un elemento all'altro.
Se qualcuno sapesse anche dove trovare alcuni prog sulle liste già 
pronti sarebbe perfetto perchè mi sarebbero molto utili per l'esame.
Ringrazio chi avrà voglia di aiutarmi.
CIAO ALE

 CIAO ALE
Ciao,
Simone
Newsgroup: it.comp.lang.c
Titolo: Perchè mi chiede di effettuare un cast

struct nodolista{
       int info;
       struct nodolista *next;
};
typedef struct nodolista NODOLISTA;
typedef NODOLISTA *lista;
lista insertInTesta(lista l,int value){
   lista app;
   app=(lista)malloc(sizeof(NODOLISTA));
   if (app!=NULL){
      app->info=value;
      app->next=(l==NULL)?NULL:l;
      ERROR_LIST=0;
   }
   else ERROR_LIST=1;
   return (app);
}
Nel main inserisco queste righe di codice
lista l=NULL;
l=insertInTesta(l,0);  <--- mi dice [Warning] assignment makes pointer from 
integer without a cast
Qualcuno mi sa puņ aiutare
se sostituisco la riga con la seguente il Warnig scompare
l=(lista)interInTesta(l,0)
per quale motivo devo effettuare il cast ?
Grazie
ReDiCuori
-- 
-- 
L'uomo non sa perchč si innamora, l'uomo viene travolto e basta
---------------------------------------------------------
www.giordanoemilio.altervista.org
---------------------------------------------------------
www.securitygroup.it
Societą di servizio che opera nel campo
della sicurezza aziendale
---------------------------------------------------------
www.pascallike.too.it
http://utenti.lycos.it/pascallike
il sito sulla programmazione pascal
sorgenti, tutorial ed utility
------------------------------------------------------------
www.treves-srl.com
Libreria Internazionale Treves
Via Toledo 249/250 Napoli
------------------------------------------------------------
www.alphalibri.com
Vendita ingrosso di libri
Via S.Anna dei Lombardi 10 , Napoli
------------------------------------------------------- 

Perchč il compilatore non sa cosa tu possa effettivamente passare dalla 
funzione e ti avverte.
M


 per quale motivo devo effettuare il cast ?
Non devi effettuare il cast, devi solo includere "stdlib.h", necessario
per malloc().  Non devi effettuare neanche il cast sul valore di ritorno
di malloc() (che è obbligatorio in C++, ma da evitare in C).
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 integer without a cast
Il compilatore non vede la dichiarazione di insertInTesta in main.c.
Se non conosce la dichiarazione allora assume "int insertInTesta".
-- 
Horst
Newsgroup: it.comp.lang.c
Titolo: Editor per c

Ciao a tutti.
Il DJGPP offre sia Rhide che Emacs come editor.
Emacs e' particolare, ed una settimana che lo sto
provando. Rhide invece e' piu' "intuitivo" e
simile ad altri editor che ho usato.
Chiedo: ci sono dei validi motivi che
giustifichino l'apprendimento di Emacs?
Grazie 
Igor Rossetti

 giustifichino l'apprendimento di Emacs?
Just for the cause. 
Seriamente: emacs  e` tra le  20.000 e le  30.000 volte meglio  di rhide
(per  svariati motivi,  dal syntax  highlighting, agli  aiuti che  da ai
programmatori tramite l'interfacciamento  col compilatore, col debugger,
con il linker, etc, etc, etc).
Personal  Tip: prova  vim per  Win32 (
http://www.vim.org
)  e la  sua GUI
gVim. Piu` semplice di Emacs, anche perche' e` solo un editor di testo.
-- 
Emmanuele Bassi         |  Linux: [ 
http://digilander.iol.it/ebassi/linux/
 ]
                        |   SLRN: [ 
http://digilander.iol.it/ebassi/slrn/
  ]
emmanue...@iol.it
  |   SETI: [ 
http://digilander.iol.it/ebassi/seti/
  ]
  GnuPG Key Fingerprint: 9747 635E B95A B0B3 4370 1CAA CAF7 512B 945C A44C

Newsgroup: it.comp.lang.c
Titolo: Imparare il C senza spendere ...

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

ricordo PRINT e A$ dai tempi del BASIC :-)
IMHO, installa Linux e usi xwpe, oppure djgpp con rhide sotto win.