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

Vorrei provare a fare un piccolo circuito e leggere i dati che manda al PC.
So' che per il C ci sono molte librerie, ma non sono molto pratico.
Potreste indicarmi qualche link dove documentarmi ?
Grazie


Presumibilmente un gruppo di discussione relativo allo sviluppo sotto il 
tuo sistema operativo, in quanto il linguaggio C standard non prevede 
funzioni per interfacciarsi con dispositivi esterni. Vedi (ad esempio) 
it.comp.programmare.win32 o it.comp.os.linux.development.
-- 
Enrico `Trippo' Porreca



se lo interfacci via seriale c'e' il Serial-HOWTO
ciao
-- 
Er Baitch
http://baitch.altervista.org/
-- Fortune of the day --
The Heineken Uncertainty Principle:
	You can never be sure how many beers you had last night.
Newsgroup: it.comp.lang.c
Titolo: cast fra puntatori e variabili

Salve,
Per capire in quale ordine vengano memorizzati i byte delle variabili del
tipo "int" nella Ram,
ho scritto questi due semplici programmini:
////////////////////////////////////////////////////////////////////////////
/////////
1° PROGRAMMA
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <stdint.h>
/*
questo programma serve per capire in quale ordine vengano tenuti in memoria
RAM i byte del tipo intero "int". Viene allocato per primo il LSByte o il
MSByte?
*/
main()
{
/*
i: il contatore del ciclo
a: la variabile del tipo "int"
vet: il vettore che legge un byte alla volta della variabile "a"
n_a: n° byte del tipo "int"
*/
int i;
int a=1;
signed char* vet;
int n_a=sizeof(int);
vet=&a;
printf("il tipo 'int' viene memorizzato in questo ordine nella RAM\n");
for(i=0; i<n_a; i=i++)
{
printf("%d\n", vet[i]);
}
getchar();
}
////////////////////////////////////////////////////////////////////////////
/////////
2° PROGRAMMA
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <stdint.h>
/*
questo programma serve per capire in quale ordine vengano tenuti in memoria
RAM i byte del tipo intero "int". Viene allocato per primo il LSByte o il
MSByte?
*/
main()
{
/*
i: il contatore del ciclo
a: la variabile del tipo "int"
pa: il puntatore ad "a"
vet: il vettore che legge un byte alla volta della variabile "a"
n_a: n° byte del tipo "int"
*/
int i;
int a=1; int *pa=&a;
signed char* vet;
int n_a=sizeof(int);
vet=(signed char*)pa;
printf("il tipo 'int' viene memorizzato in questo ordine nella RAM\n");
for(i=0; i<n_a; i=i++)
{
printf("%d\n", vet[i]);
}
getchar();
}
////////////////////////////////////////////////////////////////////////////
/////////
La differenza fra i due programmi, è che il primo inizializza il puntatore
"vet" passandogli
"&a", invece il secondo lo fa passando per la creazione di un altro
punttore, intermedio, "pa".
Concettualmente non cambia niente, perchè in entrambi i casi "vet" punta 1°
byte di "a".
Eppure il 1° programma dà errore di compilazione, mentre il secondo
programma dà solo il warning.
Ora io chiedo: perchè il 1° non è sintatticamente corretto, mentre il 2° sì,
nonostante si
 comportino esattamente nella stessa maniera? Quali sono i vincoli
nell'assegnamento a puntatori
 di altri puntatori o variabili, del tipo diverso da essi?
(lasciate perdere per ora il fatto che il 2° programma esegua il ciclo
infinito, se mandato in
 esecuzione. Ciò è oggetto di un altro post).
Grazie,
adriano

 programma dà solo il warning.
La differenza è che nel primo assegni due variabili di tipo diverso. Nel 
secondo fai un cast per convertire il tipo.
E.
Newsgroup: it.comp.lang.c
Titolo: array

il compilatore mi da errore in questa parte di codice, non riesco a
capire perchč
	Arr[0] = 66;
	iArr[1] = 23;
	for (i = 2; i < n;  i++) iArr[i] = i;
	for (i = 0; i < n;  i++) printf("iArr[%d] = %d \n",i,iArr[i]);
premetto che iArr č stato inizializzato come array di 150 elementi
( int iArr[150])...
grazie 
		gabo


Intanto li' ci va iArr, non Arr, ma era un typo, vero? ;)
E poi... n quant'e'?
Poi, sarebbe utile sapere QUALE errore ti da.
-- 
Brain fried -- core dumped
*** Don't THINK different, BE different! BeOS.***
http://www.be.com
 
http://www.bugit.org
La mia (penosa, per ora) homepage: 
http://digilander.iol.it/burton666/

Poi, sarebbe utile sapere QUALE errore ti da.
ti ringrazio, ho trovato l'errore,ere in tutt'altra parte del
codice... i misteri del c!
Newsgroup: it.comp.lang.c
Titolo: Array indirizzi IP

Ciao ragazzi.
Dopo molto tempo lontano dal C mi sono rimesso ad utilizzarlo per
scrivere Plugin per altre piattaforme di sviluppo ma ho subito
incontrato un problema: voglio banalmente costruire un Array di
stringhe contenente un range di indirizzi IP (tipicamente da 1 a 255) a
partire da un indirizzo IP passato alla funzione.
Più o meno in questo modo
Mettiamo anche di passare l'indirizzo in questo modo
Local_Host_It = "192.168.1."
for ( i = 1, i < 255, i++) {
   itoa( i, str, 10 );
   strcpy( Local_Host_IP1, Local_Host_IP);
   strcat( Local_Host_IP1, str );
   // Assegnando il valore di Local_Host_IP1 (formato da Local_Host_IP
+ ( 1 < i < 255 ))
   // agli elementi di un array (o di una struttura, o di un Array
costruito con le API della
   // piattaforma per la quale sto scrivendo il Plugin) ottengo che
tutti gli elementi dell'array
   // hanno lo stesso valore: il valore che assume Local_Host_IP1
nell'ultimo ciclo.
   // Essendo gli elementi dell'array (char *) puntanto alla variabile
e non mantengono il valore
   // della stessa nel momento in cui gli viene assegnata.
}
1. Mi sono spiegato?
2. Come posso ovviare al problema?
3. Ho sbagliato completamente approccio?
4. Consigli?
Grazie, Michele

2. Come posso ovviare al problema?
Non hai definito l'array delle 255 stringhe.
char *Local_Host_It = "192.168.1."
int i;
char Local_Host_It_Array [255][15];      // Array di stringhe
for (i = 1, i < 255, i++)
   sprintf (Local_Host_It_Array [f],"%s%d",Local_Host_It,i);

Fantastico, il tuo input è stato ottimo.
Solo nello specfico non ottengo ancora il risultato deiderato.
Ti posto il codice (omettendo tutto ciò che riguarda l'IP)
PA_Variable Host_IP_Array; //Dichiarazione API
char str[254][4];
for ( i = 1; i < 255; i++ ) {
	itoa( i, str[i], 10 );
	PA_SetStringInArray( Host_IP_Array, i, str[i] ); // comando API
Stringa in Array
                // PA_SetStringInArray (PA_Variable; long; char *)
}
I valori del mio array Host_IP_Array sono tutti "254". Come mai???
Se invece metto ad es 7 come indice PA_SetStringInArray( Host_IP_Array,
i, str[7] );
Tutti gli elementi dell'array hanno valore 7
Riesci a darmi una motivazione??? grazie Michele

Riesci a darmi una motivazione?
Host_IP_Array non e' un Array.
Cambia:
PA_Variable Host_IP_Array;
in:
PA_Variable Host_IP_Array [254];
e:
PA_SetStringInArray( Host_IP_Array, i, str[i] );
in:
PA_SetStringInArray( Host_IP_Array [i], i, str[i] );

Grazie mille ma ti confermo che Host_IP_Array è un array, ti posto le
varie dichiarazioni
PA_Variable Host_IP_Array;
Host_IP_Array.fType = eVK_ArrayString;
Host_IP_Array.uValue.fArray.fNbElements = 255;
Host_IP_Array.uValue.fArray.fData = PA_NewHandle( sizeof(Host_IP_Array)
);
Host_IP_Array.uValue.fArray.fCurrent = 1;
Ho comunque individuato il problema. Praticamente non riesco ad
impostare la lunghezza delle stringhe di questo array. Il valore di
ritorno è -1 e non so per quale strano motivo il risultato è che
tutti gli elementi dell'array portano il medesimo valore.
La soluzione del mio problema ora va OFF-TOPIC non riguarda più il C
ma le API specifiche del 4th Dimension. 
Grazie e buona giornata
Newsgroup: it.comp.lang.c
Titolo: ruotazione dei poligoni

Bando alle ciancie .
Qualcuno sa dirmi come far ruotare un cerchio in C?
Un mio amico mi ha consigliato di ridisegnare ad ogni cilco un'ellisse
traslata, in modo da simulare la rotazione del cerchio, ma non è una vera
rotazione.......!!!!
Grazie per l'attenzione.
by Siro

ebbene siด....lo confesso, se tu mi disegni un cerchio e me lo colori in
modo uniforme non riuscirei a capire se eด fermo o se sta ruotando a 1000
giri al minuto.
:)

rotazione.......!!!!
Calcola i punti nello spazio (e' facile considerando un solo piano,
quindi mantenendo fissa, per es., la y e creando i punti sul piano xz)
e poi fallo ruotare normalmente (ci sono formule adeguate a
proposito), avendo cura di rappresentare le coordinate tridimensionali
in coordinate piane.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
--------------------------------------------------------------
"Partire e' un po' morire e morire e' partire un po' troppo !"
--------------------------------------------------------------

giri al minuto.
Questo solo se sta ruotando rispetto al suo centro, altrimenti lo vedi
eccome. Ma credo che l'OP si riferisse allo spazio.

Newsgroup: it.comp.lang.c
Titolo: Cls

C'è una funzione per pulire lo schermo e riportare il cursore all'inizio
dello schermo, tipo clrscr del Pascal?
--
Marco Iannaccone
ICQ: 18748121
IRC: Tolkien
e-mail: 
captai...@ussvoyager.com

dello schermo, tipo clrscr del Pascal?
Vuoi dir clrscr del *Turbo* pascal ;)
Attenendosi agli standard dei linguaggi non esiste nulla di portabile.
In ogni caso non e' raro trovare la libreria non portabile conio.h per
DOS in cui e' presente una funzione clrscr() 

 dello schermo, tipo clrscr del Pascal?
Sia il Borland che il DJGPP hanno la funzione non standard clrscr().
EMG

>Sia il Borland che il DJGPP hanno la funzione non standard clrscr().
Ciň quella definita in conio.h?
Ma se ho una libreria in un compilatore, la posso portare in un altro
diverso?


Che significa non portabile?
E che vuol dire per DOS? conio.h va solo in DOS? Ne esistono versioni
diverse per ambienti diversi? O è solo clrscr() che è per DOS?
Le funzioni standard "funzionano" in tutti gli ambienti?


Le funzioni standard "funzionano" in tutti gli ambienti?
Certo, altrimenti non sarebbero standard ;)

 diverso?
In generale no. In particolare, puoi farlo se i due compilatori sono
compatibili dal punto di vista delle librerie oppure se hai i sorgenti
delle stesse puoi tentare un porting.
EMG

 Certo, altrimenti non sarebbero standard ;)
O per lo meno in tutti i compilatori che rispettano lo standard.
Purtroppo spesso questo non accade...
EMG

E quando trovo una libreria su un CD di una rivista?

Newsgroup: it.comp.lang.c
Titolo: [Visual C++ 5.0] Debug/Release???

Ciao a tutti e grazie in anticipo per l'attenzione.
Ho il seguente problema: in un mio programma scritto e compilato con Visual
C++ 5.0 (sotto WinME) funziona tutto perfettamente in modalità Debug, ma se
vado in Release mi fa strani casini.
In pratica ho una lista dinamica semplice (a una sola direazione), che
amplio piano piano durante lo svolgersi del programma, e alla fine dovrei
salvare questa lista. Purtroppo accade che in release la funzione che
inserisce nuovi elementi nella lista non funzioni per niente!
Vi posto la funzione:
PS: Non ho mai usato le liste, percio mi sono arrangiato a modo mio, e
sicuramente avrò fatto pasticci e infratto tutti gli standard che esistono
sulla terra... ;))
int InserisciRelazioni(RELAZIONE r, CONOSCENZA *c)
{
 CONOSCENZA *ptr;
 int i = 0;
 if(r.ogg1.parola == NULL || r.relazione.parola == NULL || r.ogg2.parola ==
NULL)
  return ERRORE;
 if(!CercaRelazioni(r, *c))
  return ERRORE;
 ptr = c;
 if(ptr->r.relazione.parola != NULL)
 {
  ptr = CercaCodaConoscenza(c);
  ptr->next = (CONOSCENZA*) malloc ( sizeof(CONOSCENZA) );
  if(!ptr->next)
   return ERRORE;
  ptr->next->r = r;
  ptr->next->next = NULL;
 }
 else
 {
  c->r = r;
  c->next = NULL;
  i = 0;
 }
 return i+1;
}
Ciao e Grazie,
Dome
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 wrote in message
news:A_zb7.15483$fA3.6...@news.infostrada.it...


HELPPPPPPPPPPP!!!!
Dome
--



Btw  _i_  a cosa serve? Lo inizializzi a 0, in qualche caso gli assegni 0, e
se non
ci sono errori lo usi per restituire 1? E' voluto? Da qualche parte
intendevi
assegnargli un altro valore?
ciao
Massimo

 assegnargli un altro valore?
Quella č una cavolatina che ho fatto io ;-) Manca un pezzettino di codice
che nella prima parte della if incrementi la variabile i ;)))
Dome
--


Newsgroup: it.comp.lang.c
Titolo: accedere alla porta parallela

Come devo fare per accedere alla porta parallela in ambiente windows?
Vorrei anche sapere come fare ad accedere ad un indirizzo di memoria arbitraria
in modo asoluto.
Grazie.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie.
it.comp.programmazione.win32

 in modo asoluto.
con un puntatore a cui assegni il valore dell'indirizzo a cui vuoi accedere...
se non sai usare i puntatori alla perfezione, quest'poperazione č rischiosa, e a farti impallare il
sistema ci vuole poco...
--
~*dyablo*~
mail: 
dya...@virgilio.it

 sistema ci vuole poco...
vero ed inoltre ricordo che in modalità protetta ogni accesso avviene alla
memoria logica e non a quella fisica dunque l'intero letto in questo modo
a=*(int*)1000000;
si trova si nel milionesimo byte di memoria ma a partire dall'inizio del
segmento corrente che inizia in un punto "arbitrario" della memoria fisica
ovvero se volessi leggere effettivamente il byte di indirizzo fisico <p>
allora non potrei farlo nel modo appena visto!
Ciao
Alessio C

 ha scritto nel messaggio
news:c52c9e3bffc82094dff...@mygate.mailgate.org...

Newsgroup: it.comp.lang.c
Titolo: Floating point exception

Mi si verifica una "Floating point exception" tra l'uscita da un costruttore 
e l'istruzione successiva... es.:
MyClass o ( otherO) ;
printf("...");
a parte che non riesco a fare il debug...ma usando delle printf mi accorgo 
che il costruttore di MyClass termina correttamente, poi viene generata una 
Floating point exception e la printf non la esegue nemmeno.
Cosa può essere?
Ciao.
P.S. Eventualemente, se qualcuno interessa approfondire posso postare il 
codice oppura dire cosa entra in ballo nel costruttore...ma sono semplici 
inizializzazioni di altri oggetti... (in particolare di 1 solo...)
 

 wrote in message
news:nqO_9.69927$YG2.1...@twister1.libero.it...

Sono interessato al codice, al compilatore che usi e la versione e quale
sistema operativo.
Come e' fatta MyClass e chi e' otherO.
Senza questi dati minimi, credo sia molto complicato aiutarti.
Maurus

Maurus wrote:

il problema era una div per 0 (scritto male il nuome di una var) ma il fatto 
curioso è che si verificava + in avanti rispetto a dove si bloccava il 
programma. Per l'esattezza ecco il codice.
gcc version 3.2 (Mandrake Linux 9.0 3.2-1mdk)
kdevelop 2.1.4
blockPointer::blockPointer( state *s ){
 printf("\ninizio COSTRUTTORE block pointer " );
 localstate=s;
 predecessor=new listPointer;
 counter=0;
 printf("\nfine COSTRUTTORE block pointer " );
}
#################
codice chiamante la classe blockpoiunter
  hashTable ht; //la grandezza si definisce modificando il define nel header 
  state *s1,*s2,*s3,*s4,*s5;
  s1=ht.getState(1);
  s2=ht.getState(2);
  s3=ht.getState(3);
  s4=ht.getState(4);
  s5=ht.getState(5);
printf("\n-3-");
  blockPointer bp1( s1 );
printf("\n-4-");
  bp1.addState(s2);
printf("\n-5-");
ebbene...l'struzione fasulla era in addstate, ma non scriveva nemmeno -4-
come mai?
ciao e grazie

 come mai?
Può darsi che l'errore venisse rilevato durante il caricamento delle
istruzioni nella cache del processore, prima di essere eseguite dal
processore stesso.
Saluti

 Cosa può essere?
stack corruption suppongo..
Sbirish.

 Saluti
ciao!

 ciao!
Saluti
--
Per l'e-mail rimuovere la frase in maiuscole e gli underscore.
Newsgroup: it.comp.lang.c
Titolo: prefisso static

Scusate ma che differenza c'è tra
dichiarare una funzione con prefisso static
static int pippo(int arg1, int arg2);
e senza?
int pippo(int arg1, int arg2);
---
Un'ultima cosa,
mi sembra di aver notato che nel *vecchio*
standard ANSI era permesso questo tipo di sintassi:
int pippo(arg1, arg2)
 int arg1, arg2;
{
    ...
}
e pensavo che sarebbe abbastanza comodo usare le stesse regole sulla
nuova sintassi,
invece di scrivere:
int pippo(int arg1, int arg2);
scrivere:
int pippo(int arg1, arg2);
mi chiedevo come mai non si puo' fare..
vi ringrazio per la vostra attenzione.
DaveNlp

 
con static la funzione non è esportata ed è visibile solo all'interno
del file in cui la usi. Stessa cosa per una variabile globale dichiarata
static (è paragonabile al 'private' di java & c++ (mi pare)). Abbastanza
diverso è invece il significato di una variabile locale static: mantiene
il suo valore nelle successive chiamate della funzione in cui è
dichiarata
Ciao
Matic

 mi chiedevo come mai non si puo' fare..
Non e' prevista da nessuna parte.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 [...]
Forse perche' la nuova sintassi deriva dal C++,
e il C++ se non scrive tipi dappertutto non e' contento ?    ;)
Ciao
E.


chiara ed esauriente risposta. :-)
in sostanza sono d'accordo.
ciauz.
Dave


aaaaa... allora mi sono sbagliato,
devo rimuovere tutti gli static dal codice.
nooo.. :-(
ciao
Dave

 e il C++ se non scrive tipi dappertutto non e' contento ?    ;)
Direi piuttosto che la sintassi che suggerite e' ambigua, nelle 
dichiarazioni di variabili si puo' fare perche' quando si cambia tipo di 
mezzo c'e' un ";" ma non nella lista dei parametri.
Da questo punto di vista la sintassi K&R non fa cosi' schifo no ?
(lo so sono un vecchio nostalgico ... :-))
Ciao,
Stefano.

 (lo so sono un vecchio nostalgico ... :-))
E come si fa a non essere nostalgici ?
Tra Palladium, brevetti software e schifezze simili....
Ciao  :)
Emilio
Newsgroup: it.comp.lang.c
Titolo: Librerie autocostruite.

Ciao a tutti,
ho un problemino da risolvere e spero che qualcuno mi possa aiutare:
vorrei costruirmi una piccola libreria di mie funzioni sullo stile
delle librerie standard.
Spiego meglio:
vorrei che le mie funzioni fossero collegabili ad un programma
soltanto aggiungendo un #include<mialibreria>.
Come si fa???
Grazie per l'attenzione.

 delle librerie standard.
Devi utilizzare programmi tipo Lib della Microsoft o TLib della Borland.
EMG



Ovviamente pero' con compilatori che supportano il formato .lib come
formato di libreria.
Credo che il djgpp non lo faccia.

 formato di libreria. Credo che il djgpp non lo faccia.
  Nel qual caso c'e` ar. ;)
	Alla prossima,
		Marco

 Credo che il djgpp non lo faccia.
Per questo ho detto "tipo". Non avevo capito che l'amico utilizzava il
DJGPP. In quel caso il programma si chiama Ar.
EMG

 Grazie per l'attenzione.
Se usi MVC++ o compilatori che supportano la direttiva:
#pragma comment(lib, "mialibreria")
allora inserisci la precedente riga nel tuo file di intestazione e come per
magia la tua libreria vera linkata all'interno di tutti quei programmi che
richiamano la tua intestazione con questo giochetto puoi farsi di includere
vari tipči di libreri da quelle statiche a quelle dinamiche fa mi sapere se
ti sono stato di aiuto comunque  se ti serve qualcos'altro o non hai capito
scrivi ok ciao 
DeadB...@hotmail.com


Il file 'mialibreria' deve essere un file .obj o cos'altro??
Grazie per la risposta.
Paolo

Newsgroup: it.comp.lang.c
Titolo: getchar() e backspace

E' possibile rilevare la pressione del tasto backspace tramite la 
funzione getchar() in modo da avere il corrispondente codice ascii ?
Se no, come potrei fare ?
   Grazie :)
Utilizzo Linux.Compilatore GCC.

 Utilizzo Linux.Compilatore GCC.
	$ man getch
-- 
Alla prossima,
Marco

Marco Natoni wrote:

 Ti ringrazio :)
   Ciao

Newsgroup: it.comp.lang.c
Titolo: Guida cu C

Chi potrebbe consigliarmi una guida da 0 per il C, disponibile su internet?
Ciao a tutti.

 ha scritto nel messaggio
news:8_0w5.5705$0C2....@news.infostrada.it...


 wrote in message
8pqi67$hd4$1...@fe2.cs.interbusiness.it...


Newsgroup: it.comp.lang.c
Titolo: Un buon libro


God, I ask for patience -- and I want it right now!

 ha scritto nel messaggio
news:8sarq0$7il$1...@lacerta.tiscalinet.it...


>Potreste consigliarmi un libro per imparare il C?
Brian W. Kernighan, Dennis M. Ritchie
"Linguaggio C - Ansi C" seconda ed.
Jackon Libri
Scritto dagli autori del linguaggio...
... poi vai al sito:
http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html
E correggi giusto 2 cosette, piu' che altro connesse
alla malloc.
Nota: le correzzioni si riferiscono alla versione
inglese del libro, ma con un minimo di sforzo
si possono apportare le correzioni pure sulla versione
italiana.
Paolo :)

 Marco
La Bibbia del C:
B.W. Kernighan - D.M. Ritchie
Linguaggio C (seconda edizione Ansi C - traduzione italiana) 
Jackson Libri  L. 46.000
gfb

news:8sarq0$7il$1...@lacerta.tiscalinet.it...

Newsgroup: it.comp.lang.c
Titolo: puntatore a array di stringhe

Salve,
ho creato dei puntatori ad erray del tipo:
char *pippo[]={"bello", "alto", "magro"};
char *pluto[]={"basso","brutto"};
...
supponiamo che le stringhe contenute in questi array debbano essere
visualizzate in sequenza, prima quelle di *pippo[], poi *pluto[],
ecc...
Perciň serve un ciclo for per scandire le varie stringhe, e un altro
ciclo for per selezionare *pippo[], *pluto[], ecc..
La domanda č: per quest'ultimo ciclo for, devo creare un puntatore a
puntatore del tipo: char **personaggi={*pippo[], *pluto[],...} ??
non mi sembra molto corretto, sapreste aiutarmi?
grazie...

 grazie...
#include <stdio.h>
char *pippo[]={"bello", "alto", "magro", 0};
char *pluto[]={"basso","brutto", 0};
char ** personaggi[2] = { pippo, pluto };
int main()
{
  int i;
 
  for (i=0;i<2;i++)
  {
     char **p = personaggi[i];
     while (*p)
       printf("%s ",*p++);
     printf("\n");
  }
  return 0; 
}
-- 
Horst


*Ti sbagli!!! *
Sono due cartoni animati!! :-D
Ciaoo

char ** personaggi[2] = { pippo, pluto };
cosě posso anche usare, ad esempio, un sizeof(personaggi[i]),
restituendo la dimensione di pippo (4) e pluto (3) ?


 restituendo la dimensione di pippo (4) e pluto (3) ?
No. personaggi[i] sono puntatori a char*.
sizeof personaggi[i] == sizeof (char**).
-- 
Horst

sizeof personaggi[i] == sizeof (char**).
perciň come dovrei fare?
char **pers = personaggi[i];
sizeof (pers);
?

Robo-One <a...@i.ot> wrote:

 for (i=0;i<sizeof pippo /sizeof *pippo;i++)
   printf("%s",pippo[i])
č possibile, ma dopo
  char ** p = pippo;
non č possibile restituire la dimensione di pippo da "p" perché p č un
puntatore.
-- 
Horst

puntatore.

 lista le stringhe del (i-esimo array di puntatori)
#include <stdio.h>
char *pippo[]={"bello", "alto", "magro"};
char *pluto[]={"basso","brutto"};
struct {char**ps; int size;} a[2] = 
      {{pippo, sizeof pippo/sizeof *pippo}, 
       {pluto, sizeof pluto/sizeof *pluto}};
int main()
{
  int i,j;
  for (i=0;i<2;i++) {
    for (j=0;j<a[i].size;j++)
      printf("%s ",a[i].ps[j]);
    printf("\n");
  }
  return 0;
}
-- 
Horst




 perchè il rapporto sizeof pippo/sizeof *pippo ?
sizeof pippo è la taglia di pippo 
sizeof *pippo è la taglia di un elemento di pippo 
-> sizeof pippo / sizeof *pippo è il numero degli elementi di pippo
-- 
Horst
Newsgroup: it.comp.lang.c
Titolo: inizializzazione successiva

Voglio inizializzare un vettore, però la dimensione la voglio inserire 
io da tastiera. Se pò fà? In sostanza, come faccio ad inizializzare un 
vettore dandogli la dimensione successivamente?
-- 
molla sa macchina....molla sa macchinaaaaaaaaaaaaaa

 
Lo allochi dinamicamente con malloc.
Luca
-- 
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<
Luca Paredi
Computing technical supporter              
Universita' degli Studi dell'Insubria  
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<

 Luca
Azz.....non c'è un modo diverso? Non c'è proprio verso di inizializzare 
un vettore dopo una scanf per esempio?


 
il gcc supporta una cosa di questo tipo :
int n;
char a[n] .... ma non so quanto sia standard :)

 un vettore dopo una scanf per esempio?
Cosa c'e' che non va nell'uso della malloc ?
Risolvi tutto in una istruzione o due.
E d'altra parte non puoi proprio dire di conoscere il C se non
sai fare una allocazione dinamica.
ciao,
g.

 char a[n] .... ma non so quanto sia standard :)
E' un contrutto previsto dallo Standard del C99.
 
http://www.google.it/search?q=c99+%22variable+length+array%22
Max

Giovanni Resta ci ha detto :

C'era in ballo una cena. Che penso dovrò pagare.
ciao

Newsgroup: it.comp.lang.c
Titolo: Debug

Salve a tutti,
posso fare il debug si un file .sys con il Microsoft Visual c++6 ?
Grazie.
--
Salvatore

Grazie.
it.comp.programmare.win32
--
Rhymes - 
rhy...@myself.com
http://www.foxhound-games.it
"Sapete cosa fa un InputStream quando
gli si racconta una barzelletta? Reader..."

Newsgroup: it.comp.lang.c
Titolo: ricerca in file modalità casuale

dovrei effettuare con il c delle ricerche all'interno di un file. Tale
file è composto da un certo numero di record i quali contengono a loro
volta dei campi. Il file è strutturato in modo che il titolo del
record è scritto in una riga e i campi sono elencati via di seguito
uno per ogni riga successiva. Ogni record è riconoscibile perché
comincia con un carattere che lo contraddistingue dai campi e comunque
ogni record contiene un numero uguale di campi sebbene ogni campo ha
lunghezza diversa da record a record. La ricerca consiste
nell'estrapolare tramite una funzione un determinato campo da un
determinato record. La mia prima idea è quella di aprire il file ad
ogni ricerca e di scorrere riga per riga finché non trovo il campo
desiderato. Tuttavia tale tipo di ricerca comporta un continuo ciclo di
apertura e chiusura del file e temo che ciò possa determinare notevole
dispendio di tempo. Avevo perciò pensato alla possibilità di aprire
il file in modalità di accesso casuale, tuttavia non sono abituato ad
utilizzare questa modalità. So che con il vecchio basic bisognava
indicare il byte in cui si voleva effettuare la lettura. Il problema
principale è che non so a priori il numero di byte verso il quale
dirigermi, perché ogni record e ogni campo hanno lunghezza differenti
e l'unica discriminante è il numero di riga. Mi interesserebbe sapere
perciò se è possibile effettuare ricerche in modalità di accesso
casuale immettendo il numero di riga. Attendo vostri consigli. grazie.

 casuale immettendo il numero di riga.
(cos'e' una riga?)
No. Per utilizzare l'accesso casuale (seek) devi prima indicizzare 
questo file. Poi puoi accedere con le chiavi di ricerca che hai 
indicizzato e che, una volta ritrovate, ti possano far risalire 
all'offset d'inizio record. Poi, se anche i singoli campi avessero una 
grandezza esagerata, andrebbero memorizzati - in qualche modo - anche 
gli spiazzamenti, piuttosto che scorrere anche qui tutto il record 
sequenzialmente...
Io lo gestirei, per esempio, con un B-Tree gia' pronto (eg. il Berkley 
DB). Ma se e' un esercizio che devi fare a scuola - e in caso ti sia 
chiesto di indicizzarlo - non credo che il prof sia intenzionato a farvi 
scrivere un algoritmo che gestisca un indice B-Tree su file :-) ... 
forse vuole un piu' semplice albero binario gestito in memoria? 
...oppure un hash? ...o forse basta una struttura ancora piu' semplice, 
sempre in memoria, ma comunque piu' efficiente rispetto ad una lettura 
sequenziale su file?
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com
Newsgroup: it.comp.lang.c
Titolo: I/O su porte seriali

Qualcuno sa dirmi come si fa a mandare l'output o
ricevere l'input in/da una porta seriale,
tipo com1, com2, ecc...?
Grazie.
--
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
e-mail: 
cerch...@ciaoweb.it
 
cerch...@email.it
 
33813...@tim.it
Bye byte, Cerchietto
La vita, senza una meta, è vagabondaggio
(Seneca)
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

-_-_-_-_-_-_-_-_-_-
_-_-_-_-_-_
   HANDLE andon_s_handl;//per la comunicazione
andon_s_handl = OpenPort("COM2","9600,n,8,1");		
   WriteEx(
&andon_s_handl, c,13);
   CloseHandle(andon_s_handl);
--------------------------------
Inviato via 
http://usenet.iol.it
 

    CloseHandle(andon_s_handl);
Ho il djgpp, nella guida non ho trovato nulla su questi comandi,
appartengono a qualche libreria?
Non c'ho capito molto, dove posso trovare una guida al riguardo?
anche in inglese, non fa differenza.
--
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
e-mail: 
cerch...@ciaoweb.it
 / 
33813...@tim.it
Bye byte, Cerchietto
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Newsgroup: it.comp.lang.c
Titolo: esercizio campionato

ragazzi piccolo aiuto su questo esercizio
/* Campionato di calcio */
#include <stdio.h>
main()
     {
char squadra1[100],squadra2[100];
int ngoals1,ngoals2;
char trattino;
FILE *fp=fopen("C:/Documents and
Settings/Administrator/Desktop/squadre.txt","r");
while(fscanf(fp,"%s%s%d%c%d",squadra1,squadra2,&ngoals1,&trattino,&ngoals2)!
=EOF)
   if(ngoals1 > ngoals2)
    printf("\n %s vince contro %s",squadra1,squadra2);
   else if(ngoals1 < ngoals2)
    printf("\n %s vince contro %s",squadra2,squadra1);
      else printf("pareggio fra %s e %s",squadra1,squadra2);
fclose(fp);
}
questo dovrebbe calcolarmi da un file squadre.txt
cosi formato
milan         juventus    3  - 0
parma         juventus    2  - 0
sampdoria      milan      5  - 0
di far vedere il risultato
ma quando lancio l'applicativo mi viene questo risultato
juventus vince contro milan
parma vince contro zero
sampdoria vince contro 0
5 vince contro milan
5 vince contro 0
xchè non legge esattamente i record di ogni riga. mi considera come
possibili record di vittria anche i ngolas? booohhhhh
grazie di cuore

 =EOF)
Qui sta l'errore... non usare %c ma usa un %s (e chiaramente trasformat il
&trattino in trattino, e il char trattino in char trattino[100]
La prossima volta perň fa del debug. Riempi il programma di printf e cerca
di scoprire dove perde l'allineamento. E inoltre non usare gli zero nei
risultati, per le prove. Usa dei valori che conosci non-zero. E per finire
metti sempre le graffe dopo un while cosě lungo. Ah... Dimenticavo... Forse
la programmazione non fa per te...ci sono tanti obbi piů semplici.
free.it.hobby.filatelia per esempio. :-)
--- bye

 ha scritto nel messaggio
news:KYQ9c.115658$z23.4...@news3.tin.it...

Newsgroup: it.comp.lang.c
Titolo: allocazione dinamica di array multidimensionali

Ciao a tutti,
ho bisogno di allocare dinamicamente una matrice tridimensionale. Ho
provato in questo modo:
double ***mat;
mat=(double***)malloc(ndimension*(sizeof(double));
ma purtroppo ottengo un errore a run time.
 Non riesco a capire come devo fare.
Grazie in anticipo a chi può aiutarmi
gianluca

 Grazie in anticipo a chi puņ aiutarmi
ciao
Giacomo

mat=(double***)malloc(ndimension*(sizeof(double));
Il cast sul valore di ritorno di malloc() non si usa in C (mentre è
obbligatorio in C++). Se vuoi allocare una matrice MxNxP scriverai:
double ***mat = malloc(M * sizeof(double**));
...
size_t i, j;
for (i=0; i<M; i++) {
    mat[i] = malloc(N * sizeof(double*));
    for (j=0; j<P; j++) {
      mat[i][j] = malloc(P * sizeof(double));
      ...
    }
}

    for (j=0; j<P; j++) {
 
Errata Corrige: j<N

     mat[i][j] = malloc( NZ * sizeof double );
sizeof(double)
Ci vogliono le parentesi per i tipi.


Uh, si'. Grazie. In effetti il mio codice era "non testato"
ciao
Giacomo

On 10 Ago, 11:59, Giacomo Degli Esposti

grazie a tutti,
ho risolto grazie ai vostri suggerimenti

Ci sono vantaggi/svantaggi prestazionali nell'usare questa tecnica rispetto 
all'allocare un array di double monodimensionale di dimensione MxNxP e 
convertire ogni volta gli indici 3D nella posizione 1D?
Pleg 



L'unica differenza è che nel secondo caso ti complichi la vita :-)

 L'unica differenza è che nel secondo caso ti complichi la vita :-)
"Non stai pensando quadrimensionalmente" (cit)
:-)
Pleg 


Dal punto di vista delle prestazioni probabilmente sarebbe meglio 
allocare un unico blocco:
VANTAGGI:
- hai meno operazioni di allocazione;
- utilizzi meno memoria;
- i dati si trovano in memoria contigua => migliore utilizzo della cache
SVANTAGGI:
- l'accesso casuale agli elementi potrebbe essere più lento. Questo 
potrebbe succedere se i valori M e N non sono noti in runtime oppure non 
sono potenze di due. Ma questo non si applica alle iterazioni che se 
fatte per bene ti costano meno che con l'altro metodo.
E.

Newsgroup: it.comp.lang.c
Titolo: Implementazione server ftp in c

Ciao a tutti, sto cercando di implemetare un servere e magari un
piccolo client ftp in C sotto ambiente Linux. In particolare mi
interessa come implemetare il trasferimento di un file tramite i
socket.
Se qualcuno ne ha implementato uno per un esame o per altri motivi
sarei moooolto grato , se si mi potesse dare una mano con esempi di
codice, ho un esame piuttosto importante tra poco e sono molto
indietro con la consegna del progetto
Grazie a tutti
Deserto


I'm not prejudiced, I hate everyone equally.
Newsgroup: it.comp.lang.c
Titolo: Mi aiutate per favore.

Volete verificare per favore se i miei ragionamenti sono corretti ?
Normalmente i problemi con cui ho a che fare partono da dati contenuti in un
file e si riferiscono ad essi attraverso record.
Per esempio :
".....il primo record contiene il nome della ditta il secondo il suo
fatturato e i successivi i nomi degli impiegati e il relativo stipendio
separati da uno spazio....."
In questo caso non viene specificato se il file di partenza č da intendere
come testuale o come binario.
Quindi si pone il problema della scelta , con il conseguente approccio
diverso nei due casi.
L' unica discriminante che mi hanno insegnato č che solitamente si
utilizzano file binari quando i file sono destinati al solo uso di programmi
c; viceversa si ricorre ai file di testo nel caso in cui si voglia rendere
visualizzabile il file anche all' esterno di un programma c.
Supponendo allora di intendere il file come testuale, potrei estrarre i vari
dati attraverso un uso alternato di scanf("%s",....) e di scanf("%f",...) ,
oppure realizzare una struttura appropriata per gli impiegati e il relativo
stipendio e raccogliere i dati con una unica chiamata di scanf("%s %d",
...campi della struttura...) saltando lo spazio fra essi automaticamente.
Non posso utilizzare i questo caso fread.
Viceversa se intendo il file come  binario posso usare fread.
Devo definire  un buffer di caratteri dove depositare temporaneamente le
stringhe che leggo, ed anche un buffer di float con un unico elemento per
caricare il dato numerico.
Posso altresě creare una struttura ad hoc che contiene un array di caratteri
e un float , quindi definire un array con elementi di questo tipo e fare la
lettura quasi in un solo colpo.
Ma qui si pone il problema dello spazio tra il nome dell' impiegato e il suo
stipendio.
Dovrei allora aggiungere un campo char alla struttura per raccogliere questo
spazio e poi non utilizzarlo?
Per favore datemi un consiglio su come operare perchč ho una tale confusione
nella testa ,che mi sta scoppiando.
Conoscete altri metodi?

 Viceversa se intendo il file come  binario [...]
Visto che l'unica distinzione tra le due modalità di apertura consiste
nella gestione dei caratteri di separazione e che mi pare che lo
spazio tra i vari campi dei record non ti interessi, puoi fare una
cosa simile (ma ci sono molti altri modi, anche con fread):
typedef struct dipendente
{
    char nome[50];
    int stipendio;
};
...
FILE *fp;
dipendente staff[10];
int fatturato, i=0;
char *ditta[50]
fp = fopen("dati.dat", "rb");
fscanf(fp, "%s%d", ditta, &fatturato);
while ((fscanf(fp, "%s%d", staff[i].nome, &(staff[i].dipendente))!=EOF) i++;
...
Così hai i dati della società in 2 variabili a parte e quelli dei dipendenti
nella
struttura. Gli spazi o qualunque altro carattere di separazione tra i dati
sono
stati ignorati.
Ciao
Riz

 ha scritto nel messaggio
news:gc3H7.56964$sq5.2...@news.infostrada.it...


 discussione a riguardo venga svolta sotto il messaggio iniziale.
la netiquette dice anche di quotare i messaggi...
classico esempio di PBERM
Newsgroup: it.comp.lang.c
Titolo: [DJGPP] Problema di base

Ciao a tutti, vorrei chiedervi un aiuto per un mio problema da "novizio" che
probabilmente vi parrà abbastanza stupido ma che -dopo aver letto qualche
chilo di faq- non so ancora come risolvere.
Allora, dopo aver scaricato e installato (correttamente, credo) il DJGPP, ho
scaricato anche qualche altra libreria GNU. Ho visto che spesso per generare
il file <lxxx.a> occorre fare il 'make': ma per fare questo bisogna aver
creato precedentemente il 'makefile' con il comando './configure'. Ma questo
comando da dove arriva? Se ho capito bene, dovrebbe essere definito nella
sottocartella /bin/sh, che io non ho. Ho scaricato anche lo zip di
Autoconf-2.58, ma non mi pare che includa né file *.exe né file *.c da
compilare. Come diavolo faccio ad "avere" il comando "./configure"???
Grazie in anticipo!


Beh, questa non sarebbe una domanda proprio inerente al linguaggio C, 
cmq diciamo che quello che ti serve per generare il comando ./configure 
sono gli autotools ed i libtool. Guarda sul sito della GNU per maggiori 
informazioni, tutorial se ne trovano in giro (mi ricordo uno sul sito 
della redhat piuttosto buono). Detto per inciso, configure e' un file 
autogenerato dagli autotools, ed e' diverso per ogni programma.
Diciamo che non e' che siano _essenziali_ gli autotools e libtool per 
fare librerie condivise, pero' ti semplificano molto la vita, e ti 
permettono di generarli in modo uniforme su tante piattaforme.
-- 
/**
  * 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: Mastermind

Salve a tutti
Come avrete visto dall'oggetto devo programmare un semplice mastermind a 3
cifre. Vi riassumo in poco ciň che devo fare.
Ho tre cifre casuali da uno a dieci che il programma sceglie, poi l'utente
inserisce 3 num in tre variabili.
A questo punto il programma deve confrontare le tre cifre e dire se sono
giuste tutte e tre o solo alcune e se ci sono cifre giuste ma nel punto
sbaglaito (es. 123-132 il 3 e il 2 saranno giuste ma nel posto sbagliato)
Nel modo piů istintivo quindi usando solo if verrebbe davvero noioso e
ridondante....volevo chiedervi qualche idea per renderlo meno lungo....
Grazie e ciao

 ha scritto nel messaggio
news:ROO5a.294905$AA2.11...@news2.tin.it...




#define NUMCIFRE 3
int main(void) {
  short Soluzione[NUMCIFRE], Tentativo[NUMCIFRE];
  short i, j;
  short PostoGiusto, PostoSbagliato;
  short NumTentativi=0;
  /* Inizializzazione */
  for(i=0; i<NUMCIFRE; i++) Soluzione[i]=NumeroCasuale();
  do {
    /* Richiesta tentativo */
    for(i=0; i<NUMCIFRE; i++) {
      printf("Cifra %d: ", i); scanf("%d", &Tentativo[i]);
    }
    /* Controllo correttezza */
    PostoGiusto=PostoSbagliato=0;
    for(i=0; i<NUMCIFRE; i++) {
      for(j=0; j<NUMCIFRE; j++) {
        if(Tentativo[i]==Soluzione[j]) {
          if(i==j) {
            PostoGiusto++;
          } else {
            PostoSbagliato++;
          }
          break;
        }
      }
    }
    printf("%d numeri al posto giusto, %d al posto sbagliato\n",
           PostoGiusto, PostoSbagliato);
    NumTentativi++;
  } while(PostoGiusto!=NUMCIFRE);
  printf("Hai indovinato in %d tentativi!\n", NumTentativi);
  return EXIT_SUCCESS;
}
Lascio che sia il lettore a correggere tutti gli errori dovuti al
fatto che non ho provato a compilare.
by LjL
ljl...@tiscalinet.it

Newsgroup: it.comp.lang.c
Titolo: si può linkare sorgenti c e c++?

Salve a tutti,
spero possiate darmi un mano a risolvere il mio problema. Come da oggetto,
il mio programma e composto da più moduli scritti in C ed uno solo in C++
(perché in questo modulo utilizzo delle librerie di classi scritte in C++,
la Omega Library se qualcuno di voi ne ha sentito parlare), infine ho un
modulo scritto in C che richiama tutti gli altri.
Il problema e che quando vado a linkare i codici oggetto prodotti, ottengo
degli errori. Ho provato ad utilizzare la direttiva Extern C nel modulo
scritto in C++ ma o perché ho sbagliato qualcosa o per altro motivo che
ignoro, non riesco comunque a farlo.
Mi rivolgo pertanto a tutti coloro che hanno esperienza con questo problema
affinché possano darmi un consiglio o un indicazione su come procedere. Il
compilatore che sto utilizzando e il gcc istallato dal cygwin su un sistema
W98.
Grazie a tutti.
Gohan

 degli errori.
che errori?
perche' non provi a compilare tutti i moduli in C++?
non so se puo' esserti utile, ma come da prove fatte, tra l'altro per un
thread simile qualche tempo fa, il BorlandC gestisce molto bene il mix dei 2
linguaggi, vedi se puo' esserti utile e se e' compatibile con la libreria
che intendi usare.
ciao
donCiccio
Newsgroup: it.comp.lang.c
Titolo: aITOOOOOOOOOOOOOOOO

Ho un grande problema devo fare qusto programma e nono so da che parte
iniziare:
Si scriva un programma nell'assembly del MIPS, operante sul simulatore SPIM
il quale, preso in input da console un intero N,stampi sulla console tutti i
numeri n1,...,n32 che differiscono da N per un singolo bit nella
rappresentazione binaria in complemento a due.
Per realizzare il programma si consiglia di scrivere una procedura per
modificare l'i-esimo bit (1 <= u <= 32) di una word, ed
una procedura che effettui un ciclo da 1 a 32 e richiami la procedura
precedente, stampandone sulla console il risultato.
Spero che qualcuno mi dia una mano perchè sono nella...... fino al collo ed
entro il 30 devo consegnarlo.grazie 1000 teo
-- 
Posted from 
relay4.inwind.it
 [212.141.53.75] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 entro il 30 devo consegnarlo.
L'orale di Architetture I pensi di farlo tu oppure cerchi qualcuno anche
per quello?
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: [!] Consiglio su manuale e varie

1) Ho già letto Programmare in C di Apogeo e adesso vorrei leggere
qualcos'altro (solo in italiano, sigh...). Ho visto che la Mc Graw Hill ne
pubblica 3, ma sono altamente indeciso, quale mi consigliate? Vorrei
qualcosa di un pochino + avanzato.
2) Un mio programma che gira sotto dos "puro" (non shell di win, per
intenderci) dovrebbe spegnere quando si verifica una certa situazione. Mi
servirebbe una funzione in C che lo faccia. So che il dos si può spegnere a
freddo, ma io ho bisogno di spegnere il pc. Dovrebbe esserci qualche
interrupt da usare con l'assembly...qualcuno sa dirmi come o dove trovare
info in merito?
3) Vorrei evitare che il mio programma possa essere chiuso semplicemente
premendo Ctrl+c. Come si evita?
Mille grazie.
Azathoth

 premendo Ctrl+c. Come si evita?
Intercetta la signal 2
Ivan Molella

Sul manuale non ci ho capito niente :-\ A proposito di signal, dice:
Note SIGINT is not supported for any Win32 application including Windows NT
and Windows 95. When a CTRL+C interrupt occurs, Win32 operating systems
generate a new thread to specifically handle that interrupt. This can cause
a single-thread application such as UNIX, to become multithreaded, resulting
in unexpected behavior.
Per l'int 19h fa niente, scaricherò la lista di ralph Brown, ma ho parecchi
dubbi su Signal.
Azathoth

 Sul manuale non ci ho capito niente :-\ A proposito di signal, dice:
....................
Infatti noi parlavamo di dos puro :)
Il manuale dice che i win32 OS quali win98/98/NT gestiscono l' intercettazione
della signal SIGINT creando un nuovo thread ( ossia clonando una nuova porzione
di processo che girera' parallelamente al processo originario ), rendendo quindi
il processo multi-thread ,con la conseguenza che si dovra' appunto gestire la
routine puntata dalla signal con le accortezze inerenti le propieta' del
multi-threading.
Ivan Molella

Newsgroup: it.comp.lang.c
Titolo: [OT]Editor RHIDE

Salve a tutti, sapete dirmi come posso
 fare per impostare l'indentazione automatica?
L'ho settata ma non combina nulla.
Uso la versione 1.4 di Rhide.
Grazie a tutti.
Ciao

  fare per impostare l'indentazione automatica?
prova su it.comp.software.editor
-- 
RiK0
[ non credo negli schemi non vincenti ]
[     two is an odd prime number.     ]

[...]
... ho già provato , nessuna risposta.
Ciao
Newsgroup: it.comp.lang.c
Titolo: Per condividere dati tra due programmi?

Grazie dell'attenzione. Per la mia tesi ho dovuto far condividere dei dati
tra due programmi che girano su due PC (uno con DOS e l'altro sotto W98)
collegati in rete. Non sono un programmatore esperto, e l'unica cosa che mi
e' venuta in mente (tenendo presente che devo lavorare sotto DOS) e' stata
quella di usare dei file, facendo in modo che non vi accedessero
contemporaneamente. Il sistema funziona, ma ora ho un problema legato al
fatto che i dati da scambiare sono grandicelli (non enormi) e il PC ci mette
un po' troppo tempo (circa 6-700 ms) a salvarli e/o caricarli, mentre ho
bisogno che tutto avvenga in un tempo minore (di 400 ms = tempo di
campionamento di un processo da controllare).
Qualcuno sa suggerirmi un metodo migliore (considerando che non posso usare
le librerie di win a 32 bit) ?
Ringrazio anticipatamente chi sara' cosi' cortese da darmi un suggerimento.
_______________________________________________________
Excite Inbox: la tua email gratuita e personalizzabile
http://inbox.excite.it
Il Mio Excite
http://www.excite.it
A.A.A. Relazioni: trovare l'amore non è mai stato più facile
http://aaa.excite.it/relazioni
-- 
Posted from 
bucky-rwcmex.excite.com
 [198.3.99.218] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:9488293.982860558...@spike.excite.com...
Grazie dell'attenzione. Per la mia tesi ho dovuto far condividere dei dati
tra due programmi che girano su due PC (uno con DOS e l'altro sotto W98)
collegati in rete. Non sono un programmatore esperto, e l'unica cosa che mi
e' venuta in mente (tenendo presente che devo lavorare sotto DOS) e' stata
quella di usare dei file, facendo in modo che non vi accedessero
contemporaneamente. Il sistema funziona, ma ora ho un problema legato al
fatto che i dati da scambiare sono grandicelli (non enormi) e il PC ci mette
un po' troppo tempo (circa 6-700 ms) a salvarli e/o caricarli, mentre ho
bisogno che tutto avvenga in un tempo minore (di 400 ms = tempo di
campionamento di un processo da controllare).
Qualcuno sa suggerirmi un metodo migliore (considerando che non posso usare
le librerie di win a 32 bit) ?
Ringrazio anticipatamente chi sara' cosi' cortese da darmi un suggerimento.
....
In DOS dovrebbe essere possibile mappare una unità logica in memoria
(RAMDRIVE.SYS) il che migliora le prestazioni.
---
Sergio Bianchi
Newsgroup: it.comp.lang.c
Titolo: char e vettori....

Non ne' sono sicuro, anche perche' non c'e' il listato completo, comunque
credo che tu debba dichiarare la lunghezza del vettore lista[] ( quindi x) e
quando fai il ciclo devi stare attenta a non eccedere le dimensioni del
vettore.
Quel tipo di errore, e' il classico messaggio del gcc sotto Linux, si ha
quando si va a scrivere su una zona di memoria non allocata, ed e' un'errore
molto grave (spesso lo si compie con i puntatori, quando si e' pivelli).
Spero di esserti stato d'aiuto, ciao Gianni.
-- 
Posted from 
c000-h010.c000.muc.cp.net
 [209.228.29.34] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 e poi un ciclo for.... per lo scanf.
mmm... non mi sembra che si possa dichiarare un array come fai tu,
ossia usando una variabile per la dimensione. Puoi usare una costante,
oppure dichiarare un puntatore a char e poi allocare un'area di
memoria per metterci i tuoi char; ossia:
#define DIMENSIONE 128
char lista[DIMENSIONE];
oppure
int x=128;
char* lista;
lista = malloc(sizeof(char)*x);
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

 ossia usando una variabile per la dimensione.
Mi sembra che nell'attuale versione dell'ISO C questo si possa fare.
EMG

 Mi sembra che nell'attuale versione dell'ISO C questo si possa fare.
Davvero? E che effetti ha? Cioe', viene modificata la dimensione
dell'array (e quindi della memoria allocata) ad ogni cambiamento del
valore della variabile usata per la dimensione dell'array stesso, o
cosa? Sembra interessante... si risparmierebbero un po' di
malloc/free, anche se potrebbe essere causa di confusione, non trovi?


 anche se potrebbe essere causa di confusione, non trovi?
No, non mi pare. Penso che il fatto che la dimensione dovesse essere
fissata in compilazione ha sempre rappresentato una seccatura. Non so se
dal punto di vista dell'ottimizzazione cambi qualcosa ma non credo.
EMG

 wrote in message
006501c054d6$2ae0bd40$9824d5d5@default...


 fissata in compilazione ha sempre rappresentato una seccatura.
Nella mia limitata, molto limitata, esperienza non trovo che questa
caratteristica sia cosi' limitante, se per "seccatura" intendi
"limite". Penso che sia facilmente raggirabile e che non influisca
sulla semplicita'/chiarezza del codice in modo sostanziale; mi
piacerebbe sentire il parere tuo e di altri, piu' esperti di me,
sull'argomento.


 "limite".
No, non intendo "limite". E' chiaro che con l'allocazione dinamica fai
quello che ti pare ma quella automatica è più pulita. D'altronde è
proprio per questo che in C++ esistono costruttori e distruttori.
EMG