mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Pipe, file e system call

Salve, 
devo fare un progetto universitario in c sotto linux
Ho un server e piu client che inviano richieste su un pipe unico noto e
attendono risposte ognuno su un suo pipe.
Il problema (posso usare la sola read) e' che non so quale sia il modo
migliore per leggere il pipe dal server. mi spiego 
il server deve leggere dal pipe e capire quando termina la prima richiesta
e inizia la successiva... come posso farlo leggendo dal pipe con una read? 
ho pensato : 
1) richieste di lunghezza fissa ma spreco spazio ecc.
2) metto un \n alla fine di ogni richiesta ma come faccio a capire
leggendo quando incontro un \n a meno che non legga un carattere alla
volta
3) invio prima di ogni richiesta un intero che ne identifica la lunghezza 
   ma rischio problemi di race condition se un client invia l'intero e nel
 mezzo un altro client manda la sua richiesta
  quindi vorrei mandare l'intero e la stringa con la solita write che
   e' garantita atomica ... ma come posso fare a costruire una richiesta
   fatta in questo modo cioe' con l'intero in testa ad una stringa ? 
quale'e la migliore?
ulteriore domanda quale scelta e' la migliore tra: 
naturalmente le richieste vanno servite, vorrei farle servire da processi
figli (fork()) ma non so se e' meglio generare al momento un figlio che la
serva e poi si chiuda oppure fare partire n
processi ognuno dei quali riceva dal server (padre) la richiesta da
servire attraverso pipe senza nome???
grazie per i consigli

 servire attraverso pipe senza nome???
Prima di tutto leggiti questo documento:
 
http://www.ecst.csuchico.edu/~beej/guide/ipc/
La soluzione migliore e' di creare solo quello che ti serve, quando ti
serve, senza mai distruggerlo finche' pensi che potra' ancora servirti
(c'e' un compromesso che tu devi trovare tra costo per ricrearlo e
occupazione di risorve)... detto in poche parole un bel pool di thread che
si dimensiona e a seconda delle tue necessita' del momento.
Ma c'e' un "ma":
- non e' detto che le specifiche te lo permettano;
- e' un lavoraccio: gestire BENE l'IPC e' una cosa abbastanza complicata,
  forse una delle piu' complicate e subdole nell'ambito della
  programmazione;
- non e' detto che sara' apprezzata piu' di una soluzione meno raffinata;
Quindi questa domanda falla a chi dovra' valutare il tuo lavoro, non sul
gruppo dove ti ho detto di andare per porre ulteriori domande :)
-- 
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: lunghezza elementi array e cifre di interi

Salve,
volevo sapere se esiste una funzione che ritorna
la lunghezza massima di un array di stringhe.
Avendo per esempio l'array
TCHAR * szCategoria[] =
{
  TEXT("AZIONE"),   TEXT("AVVENTURA"),
  TEXT("COMMEDIA"), TEXT("SENTIMENTO"),
  TEXT("PAURA"), TEXT("THRILLER"),
  TEXT("ORIGINALITA'")
};
come faccio a prendere la lunghezza massima? (in questo caso 12)
Ho implementato una mia funzione, ma forse è un pò troppo semplice,
però funziona!
Inoltre, volevo sapere in che modo si può ottenere il numero di cifre
che compongono un numero.
Grazie.

 che compongono un numero.
if (NUMERO < 10) len = 1
else if (NUMERO < 100) len = 2
else if (NUMERO < 1000) len = 3
...
Ciao,
Ema

 
Ale
Inviato da 
www.mynewsgate.net

 ha scritto nel messaggio
news:2k1uk0F...@uni-berlin.de...


 ha scritto nel messaggio
news:200406250...@mynewsgate.net...



--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c
Titolo: Cerco programmino...

Per motivi di massimo interesse mi servirebbe un programmino capace di
elencarmi tutte le possibili combinazioni di una password di otto caratteri
composto solo da cifre (0-9).
Sarò grato per tutta la vita a colui che vorrà aiutarmi, allegandomi il
prog. per email a: 
a.del...@isnet.it
Alessandro

 wrote in message
7ncn4r$r...@dante.italia.com...


 Alessandro
Non scč problema belo!
Ecco qui il programmino di cui hai bisogno
#Begin Cracker.c
#include <stdio.h>
main()
{
	printf("\t\tEcco qui risolto il tuo problema!!");
	printf("\t\tAttento che sono tante!\n\n");
	int a,b,c,d,e,f,g,h;
	for(a=0;a<10;a++)
	{
		for(b=0;b<10;b++)
		{
			for(c=0;c<10;c++)
			{
				for(d=0;d<10;d++)
				{
					for(e=0;e<10;e++)
					{
						for(f=0;f<10;f++)
						{
							for(g=0;g<10;g++)
							{
								for(h=0;h<10;h++)
								{
								printf("%d%d%d%d%d%d%d%d\n",a,b,c,d,e,f,g,h);
								}
							{
						}
					}
				}
			}
		}
	}
}/*Attento, qui potrebbe richiedere 3 o 4 parentesi graffe, ma non so il
perché
#End Cracker.c
Questa č sicuramente la forma piů rozza e inelegante che ti poui aspettare,
ma serve allo scopo. Sono sicuro che la migliorerai...
Attento, sono davvero tante! Se sei un utente Linux mandala in pipe con
'more'
o 'less'(cracker | less, oppure cracker | more), e se sei un utente Dos/Win9x
redirigi l'output su un file  e aspetta che abbia finito.
Ciao, Francesco
PS: Per ogni eventualitŕ ti mando il sorgente
-- 
+-------*Le tre leggi del buon utente*-------+
|============================================|
+-1ř:Un utente non puo' nuocere al suo PC ne'|
|    tramite la sua colpevole inerzia permet-|
|    tere che il suo PC subisca un danno.    |
+-2ř:Un utente deve soddisfare le richieste  |
|    di sistema a meno che queste non contra-|
|    stino con la prima legge.               |
+-3ř:Un utente deve pensare ai suoi interessi|
|    installando il software di cui ha biso- |
|    gno a meno che questo non contrasti con |
|    la prima e la seconda legge.            |
|============================================|
+-Legge Zero---------------------------------+
|Un utente non puo' installare Windows, o cau|
|sera' la fine del suo PC e la rovina dell'u-|
|manita' !!!! Cobra(
franc...@iol.it
)      |
|                  (
maraf...@xoommail.com
)|
|============================================|



 >
Ecco! (è in C++)
Giorgio

Giorgio ha scritto:

Giorgio, scusa se ti disturbo, ma potresti perfavore commentarmi il codice,
visto che non sono tanto pratico del c++?
T.I.A 
		Francesco
PS:Non è una critica, mi serve solo per impratichirmi.. ;^)
-- 
+-------*Le tre leggi del buon utente*-------+
|============================================|
+-1ø:Un utente non puo' nuocere al suo PC ne'|
|    tramite la sua colpevole inerzia permet-|
|    tere che il suo PC subisca un danno.    |
+-2ø:Un utente deve soddisfare le richieste  |
|    di sistema a meno che queste non contra-|
|    stino con la prima legge.               |
+-3ø:Un utente deve pensare ai suoi interessi|

Newsgroup: it.comp.lang.c
Titolo: Pipes

Mi sapreste indicare qualche buon tutorial online (anche in inglese) che
parli delle pipes in c? Ho provato a cercare ma continuo a trovare
solamente riferimenti di idraulica :) Magari qualcuno ha già sottomano
qualche link ... grazie per l'aiuto
-- 
Taglia
=========
http://www.vortexmind.net
http://www.tgplanes.com
http://www.netwargamingitalia.net

 qualche link ... grazie per l'aiuto
cerca "Advanced Linux Programming" e' un libro interessante.
-- 
Er Baitch
"Live Your Life!!!" (Ring ain't a jail)
http://baitch.altervista.org/

 cerca "Advanced Linux Programming" e' un libro interessante.
Grazie mille, l'ho trovato online in versione pdf e pare interessante :)

Newsgroup: it.comp.lang.c
Titolo: lettura file txt di dati formattati

dispongo di alcuni file con estensione txt in cui vengono elencati
delle serie di valori separati dal punto e virgola oppure dal ritorno a
capo e vorrei manipolarli con i devc++. Considerando che non conosco a
priori la lunghezza del file che andrò ad analizzare, come posso
impostare questa lettura? In che modalità devo aprire il file e quali
librerie devo includere nell'header al fine che tutto proceda
correttamente?

Ciao pajtelo
l'apertura del file è appunto in lettura,
considerando valori numerici utilizza un buffer che possa contenere il
valore più grande es 20 caratteri
poi leggi singolarmente i caratteri del file e se non sono i saparatori
li inserisci nel buffer
altrimenti salvi il valore nei dati che successivamente ti gestirai.
by dudi
Newsgroup: it.comp.lang.c
Titolo: divisione multibyte

salve,
qualcuno sa indicarmi quale algoritmo venga impiegato per eseguire le
divisioni fra valori binari
multibyte, in un microcontrollore ad 8 bit che sappia eseguire solo le
divisioni monobyte (con
dividento e divisore ad 8 bit, crea quoziente e resto entrambi ad 8 bit)?
Sapete descrivermelo a
parole o indicarmi un link?
Io non ho alcun libro che me lo spieghi.
Se venga impiegato il metodo analogo a quello che viene insegnato alle
elementari per i numeri
decimali, servirebbe "calare" ogni volta il singolo bit, da accoppiare al
resto precedente,
verificare se il neoresto sia maggiore del divisore, se sě dividere,
altrimenti caalare un altro
bit, ecc.
Ebbene questo metodo dove si cala il singolo bit alla volta, mi pare
parecchio inefficiente.
Infatti, se il dividendo sia  16 bit, allora servirebbe calare 1 bit per 16
volte.
Esistono altri algoritmi piů efficienti? Quali?
grazie
adriano

 Esistono altri algoritmi più efficienti? Quali?
Penso che dovresti calare un byte alla volta.
E.

 wrote in
news:kLPDk.71350$
Ca.1...@twister2.libero.it
: 

partendo dal byte meno significativo. fai la divisione. vedi se nel 
registro di status della ALU c'e' il riporto. Se c'e' aggiusti il 
prossimo byte di conseguenza e vai avanti cosi fino alla fine.
devi fare MOLTA attenzione al segno.
Va da se che una cosa del genere e' meglio scriverla in assembler 
piuttosto che in C.
usa google. troverai di sicuro una spiegazione esauriente su come fare.
Pero' di solito chi fa il compilatore per i microcontrollori crea anche 
delle librerie apposta per questo genere di operazioni. Che normalmente 
vengono chiamate automaticamente quando rischiesto.
Ciao Jack
-- 
Eroi non si nasce, ti incastrano
- Jim Belushi

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

Ho in qualche modo danneggiato il file classexm.zip presente sul quarto
disco dell'istallazione del compilatore turbo c++ della Borland, qualcuno
potrebbe passarmelo o dirmi dove posso recuperarlo.
Grazie in anticipo.
Noisemaker

 ... perchè non usi il djgpp , lo trovi su 
www.delorie.com
Ciao Roberto


Quale versione del TC++?

Lello Mele <vtm.at.libero@it> wrote in message
f2Yw7.6547$g42.1...@news.infostrada.it...

 2.0
Newsgroup: it.comp.lang.c
Titolo: popen e ping

Ciao a tutti avrei un problemino non troppo serio, ho implementato un
semplice programmino che mi cattura l'output del ping e lo elabora
prendendone un pò di statistiche.
Oggi facendo un pò di test mi sono accorto che passando alla popen
qualcosa del tipo:
[...]
popen(/bin/ping hostinesistente -c3,"r")
[...]
l'output non viene catturato e viene stampato lo stesso su console il
messaggio
"ping: unknown host hostinesistente"
Avete suggerimenti?!?!?
Grazie ;)

 
Questo messaggio va sullo standard error non sullo standard output
Ciao, Alberto

Alberto EMME ha scritto:

Qunidi come posso fare per catturare anche lo stderr??
Grazie ;)

luca....@gmail.com
 ha scritto:

Vabbe mi rispondo da solo... :P
redirigere lo stderr su stdout si può fare aggiungendo al comando da
eseguire questo:
"2>&1"
es:
popen("/bin/ping -c3 2>&1 hostsconosciuto","r");

 popen("/bin/ping -c3 2>&1 hostsconosciuto","r");
...oppure, se non ti importa di avere l'output dello stderr:
ping -c3 hostsconosciuto 2>/dev/null
nb: con il ping, per non rischiare di avere processi indefinitamente 
appesi, ti consiglio di usare (se ce l'ha) il flag '-w'
(eg. "ping -c3 -w60 host" : prova per max un minuto poi esce).
ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

 Cybertoldo
Perfetto grazie ;)
Newsgroup: it.comp.lang.c
Titolo: Urgenza per scrivere una funzione

Premetto che di C ci capisco poco, ma mi trovo a dover modificare un
programma fatto da un collega irreperibile...
Ho una stringa in questo formato contenente lettere e una coppia di numeri
es:
"Ciao 25 a tutti" oppure "Oggi il sole 74 č bello"
La posizione dei 2 numeri č variabile
la stringa č lunga 30 caratteri.
I due numeri non sono sempre gli stessi, ma sono sempre e solo gli unici 2
numeri consectivi che possono esserci nella stringa!
Devo generare altre n stringhe uguali ma dove questi 2 numeri variano
Es:
Prima stringa: "ciao 25 a tutti"
Stringhe che devo generare
"ciao 10 a tutti"
"ciao 20 a tutti"
"ciao 30 a tutti"
"ciao 40 a tutti"
"ciao 50 a tutti"
.... ecc....
Il mio problema č:
come fare per avere la posizione del primo e del secondo numero???
come fare a fare la "left" sino alla posizione del primo numero -1 e la
right a partire dalla posizione successiva al secondo numero??
Poi farei l'unione di 3 strinche "ciao " + [mio numero] + " a tutti"
Chi riesce a darmi la sintassi di tutto questo mi fa un mega favore, grazie
Teo

come fare per avere la posizione del primo e del secondo numero???
Attento: stai parlando di cifre, non di numeri.
Spero ci siano pochi errori :)
(compilato in modalita' console con C++ Builder 5).
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int FindNumberIndex(const char *s)
{
    int i;
    for (i = 0; s[i]; i++) {
        if (isdigit(s[i])) return i;
    }
    return -1;
}
void Left(char *dst, const char *s, const int n)
{
     int i;
     for (i = 0; i < n; i++) {
         dst[i] = s[i];
     }
     dst[i] = '\0';
}
void Right(char *dst, const char *s, const int n)
{
     int i, j, len = strlen(s);
     for (i = len, j = n; j >= 0; i--, j--)
     {
         dst[j] = s[i];
     }
}
void BuildNewString(char *dst, const char *s, 
                    const int newnum)
{
     int NumLeft, NumRight;
     char LeftStr[128] = {0}, RightStr[128] = {0};
     NumLeft = FindNumberIndex(s);
     NumRight = strlen(s) - (NumLeft + 2);
     Left(LeftStr, s, NumLeft);
     Right(RightStr, s, NumRight);
     sprintf(dst, "%s%.2d%s", LeftStr, newnum, RightStr);
}
int main()
{
    char NewString[50];
    char OldString[] = "Oggi il sole 74 e' bello";
    puts(OldString);
    BuildNewString(NewString, OldString, 43);
    puts(NewString);
    BuildNewString(NewString, OldString, 5);
    puts(NewString);
    BuildNewString(NewString, OldString, 11);
    puts(NewString);
    getchar();
    return 0;
}
-- 
The Follet

Domani in ufficio copia incolla e provo.. grazie 1000
Newsgroup: it.comp.lang.c
Titolo: Usare in C l'SQL

Devo far prelevare ad un programma scritto in C informazioni da un
database generato con postgresql. Avrei bisogno di qualche codice di
esempio per vedere come funziona la cosa. Se qualcuno può inviarmelo o
dirmi dove posso trovarlo.
Grazie
Ciao

Ale ha scritto:

qua trovi tutto... e` il manuale di PSQL:
http://www.postgresql.org/docs/view.php?version=7.3&idoc=0&file=programmer-client.html
io al limite ti posso fornire degli esempi per DB/2 :-)
-- 
ciao, Mirco.
[ 
http://hellspawn.dnsalias.net/~mircomir/
 ] [ Icq#:51640305 ]
[ 
http://pido2.webhop.net/
 ]

Ok grazie potrebbero servirmi. Sicuramente conosci anche il caml vero?
Io l'ho studiato da poco e avrei due esercizi che non riesco a
svolgere mi potresti aiutare?
Grazie 
Ciao

 Sicuramente conosci anche il caml vero?
no.


Newsgroup: it.comp.lang.c
Titolo: Array di puntatori a chars

Salve,
devo passare ad una procedura un array di puntatori a caratteri
(stringhe). La procedura chiamata deve allocare tale array. Cosi' e'
corretto? 
char **array;
foo(&array);
con array[8]; accedo alla nona stringa
void foo(char ***text) {
	*text = malloc(10 * sizeof(char*));
}
corretto???
esiste un modo piu sintetico per scrivere char *** text?
grazie

 esiste un modo piu sintetico per scrivere char *** text?
Non so esattamente cosa voglia dire "sintetico" per te, ma direi 
di no.

 esiste un modo piu sintetico per scrivere char *** text?
il modo c'e', si chiama typdef:
typedef char** pp_char;
poi dichiari:
pp_char array;
ed il prototipo della tua funzione diventa:
void foo(pp_char *text);
e la chiamata alla funzione rimane:
foo(&array);
ed in questo modo perdi la necessita' di scrivere ***.
Decidi tu cosa renda piu' leggibile il tuo codice.
Tommaso Galleri
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: Dato un grafo...

Dato un grafo e 2 punti (uno di partenza e uno di arrivo) esiste un
algoritmi che mi vaglia tutti le possibili cammini tra i 2 punti?
Bye
Gio

 algoritmi che mi vaglia tutti le possibili cammini tra i 2 punti?
Mi autorispondo...utilizzando liste di adiacenza e cercando il cammino dal
costo minore...posso utilizzare Bellman-ford.
Nessuno ha un link con una chiara implementazione dell'algoritmo, sfruttando
le liste di adiacenza?
Bye
Newsgroup: it.comp.lang.c
Titolo: Esiste wait non bloccante dopo fork ?

Ho bisogno di sapere in modo non bloccante se un processo figlio
istanziato con una fork() è terminato.
Non posso usare la wait() o la waitpid() perchè sono bloccanti.
Esiste qualche altra funzione in grado di dirmi quando il figlio ha finito ?
(s.o. Linux con gcc)
TIA

Helix wrote:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main (void)
{
        int x = fork();
        int ret;
        if (x > 0) {
                while (1) {
                        if (0 == waitpid(x, &ret, WNOHANG)) {
                                printf("Child not exited yet\n");
                        } else {
                                printf("Child has exited\n");
                                break;
                        }
                        sleep(1);
                }
                exit(0);
        } else {
                sleep(10);
                printf("The child is exiting\n");
                exit(0);
        }
}
-- 
www.iuz-lab.info

Sei fantastico !
grazie
Newsgroup: it.comp.lang.c
Titolo: PDF con libro sul C

Sapete se online č possibile trovare qualche pdf con un libro che mi
insegni il C ? Inglese o Italiano non fa differenza
Grazie mille :)

 insegni il C ? Inglese o Italiano non fa differenza
prova con
http://www.tcfb.com/freetechbooks/bookcpp.html
http://www.bruceeckel.com/Books
ciao
emilio

 > Sapete se online č possibile trovare qualche pdf con un libro che mi


 trickyc.pdf
Al massimo lo possiamo considerare mediocre. Oltretutto e' incentrato sul 
Turbo C e il Dos, oltre ad essere datato non e' molto aderente allo 
standard.
Di libri belli sul C non ne trovi molti.
Forse puoi consultare appunti linux per ottenere circa quello che otterresti 
comprando e leggendo un buon libro sul C.
Altrimenti trovi piu' che altro singoli documenti o reference sulla libreria 
standard.
In italiano in particolare non c'e' molto.
-- 
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."

 insegni il C ? Inglese o Italiano non fa differenza
In rete un manuale ANSI-C free praticamente non esiste, tutto quello che 
trovi o è "non standard" o non è un manuale ma documentazione su librerie.
Se vuoi imparare C (ANSI-C) io ti consiglio di comprarti:
"Linguagio C (ANSI C)" di Brian W. Kernigham e Dennis M. Ritchie
E scritto dai creatori del C.
Il costo è abbastanza moderato ( io l'ho pagato circa 18 euro ), ma non ha 
documentazioni sulle librerie, tranne pochi accenni sulle stdio, stdlib, 
string, e altre di base.
Comunque un ottimo libro non solo a detta mia, prima di comprarlo ho 
chiesto a 2-3 programmatori C di mia conoscienza e tutti mi hanno indicato 
questo come la Bibbia del C, e devo dire che mi ci sono trovato bene.
Ciao.
ValerioZ 

Grazie mille :)
su questo sito trovi 30 lezioni in ITALIANO, dalla A alla Z
http://spazioinwind.libero.it/ilmoro/
Ciao!

Grazie a tutti per le risposte ;)

 
	Si fa quel che si può :-)
 
www.lulli.net
 ---> hackabilia --->  "Imparare il C"
	(in html)
	oppure su 
www.lugroma.org
 ---> progetti ---> "Imparare il C"
	(html - pdf - postscript - sorgenti tex )
	La prima metà è incentrata sugli aspetti standard del
	linguaggio, gli esempi sono tutti testati e funzionanti con gcc.
	Dopo questa prima parte (la demarcazione è indicata chiaramente)
	sono svolti argomenti specifici di programmazione Unix.
	Ciao,
	P.
-- 
* Hai gia nuotato nudo (a) al mare o in piscina? -no, ho rispetto per gli altri :-)))

	Si fa quel che si può :-)
Troppo modesto :)
Grazie mille!
Newsgroup: it.comp.lang.c
Titolo: Ho cominciato ad usare C!

Ciao a tutti sono nuovo del NG, volevo chiedervi delle cose:
Ho cominciato il 3 superiore di elettronica e hanno detto che ci faranno
usare il linguaggio c, ma è molto difficile? fino ad ora so giusto qualche
cosetta del pascal.
Ma è vero che una volta imparato ad usare questo programma si sa usare
anche linux?
Grazie per eventuali risposte.
P.S: per eventuali esercizi che ci danno a scuola che io non sia in grado
di risolvere posso mettervi in crisi anche a voi?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 di risolvere posso mettervi in crisi anche a voi?
Se vuio un aiutino si, se vuoi il compito fatto non se ne parla :)
Nota: se ti interessa avventurarti nel mondo Linux ricorda che ci sono tanti 
      NG appositi e tanti LUG sparsi per tutta Italia che non aspettano 
      altro che la tua iscrizione :)
[1] Il Pascal lo potrai trovare in alcune versioni piu' orientate alla 
scrittura di applicazioni e con estensioni per includere il paradigma della 
programmazione a oggetti: io comunque sto parlando del Pascal nella sua 
accezione originaria, come concepito dal mangiatore di Quiche :P
-- 
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."

 prima versione di Unix su PDP-11 (se la memoria non mi tradisce)
Unix fu sviluppato su molto meno: un PDP-7 poco usato :-).
http://cm.bell-labs.com/cm/cs/who/dmr/hist.html
C:\>iao Angelo


 C:\>iao Angelo
Non volevo dire che Unix fosse stato scritto originariamente per PDP-11 (qui 
hai ragione tu, era un PDP-7), ma che il C fu usato per la prima volta per 
(ri)scrivere Unix su PDP-11 (e da li portato su altre piattaforme senza 
doverli riscrivere da capo ogni volta) :)


 
piu` precisamente, fu portato su un 11/45 e un 11/70, e fu riscritto in C da
Thompson e Ritchie che inventarono tale linguaggio proprio per l'occasione.
Il motivo basilare, pero`, non era la portabilita` di un linguaggio ad alto
livello (quello fu un "effetto collaterale"), ma era molto piu` banalmente il
fatto che ne` a Thompson ne` a Ritchie piaceva programmare in assembly, lo
trovavano troppo lungo e poco gratificante :)))
Adieu,
-- 
Lestat de Lioncourt                               |          Ciro Mattia Gonano
  JabberID: 
les...@jabber.students.cs.unibo.it
    |    Undergraduate Student in
  ICQ#: 52631406                                  |         Computer Science at
  URL: 
http://www.CS.UniBO.It/~gonano
             |       University of Bologna
            <powered by Linux Slackware 9.0-beta on Kernel 2.4.19-xfs>
Newsgroup: it.comp.lang.c
Titolo: Allocazione dinamica char

Salve,
vorrei creare un array di char dinamico.
Se faccio
 char *pippo;
 int pluto;
 if ((pippo= (char *) malloc(100)) == NULL)
  printf("Error!");
 
 pluto=sizeof(pippo);
 pluto mi esce = 4
In cosa sbaglio non mi dovrebbe uscire 100?
Con il debugger del compilatore poi mi vede un array di 9 elementi :(
Boh..!!
(Sviluppo sotto xp con borland builder) (Perň questo č c :) )
Grazie
xoooox
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 (Sviluppo sotto xp con borland builder) (Però questo è c :) )
Il fatto che ti veda 9 elementi (immagino che tu stia debuggando con
l'inspect o la watch list) deriva da come è fatto il Borland Builder, che
legge gli array di char * fino a quando incontra un carattere di
terminazione '\0'. Poi definire dalla finestra di inspect la lunghezza
dell'array.
'sera lietissima, Marco

Il 21 Giu 2004, 20:37, "Markobre" <markob...@QUESTOtiscali.it> ha
scritto:

Ciao,
Mi sapresti dare qualche consiglio su come creare un array dinamico di char?
in modo che quando faccio sizeof(array_dinamico) mi esce la sua dimensione?
Grazie per le risposte date... :)
ciao


 in modo che quando faccio sizeof(array_dinamico) mi esce la sua
dimensione?
Guarda, mi ricordo di aver letto su questo stesso newsgroup che non c'è modo
di farlo in standard C se non utilizzando una struttura del tipo
typedef struct {
    void * Data;
    unsigned int ByteSize;
} DynArray;
in cui sei però tu stesso a salvare la dimensione passata a malloc(...) in
ByteSize. Altrimenti sia sotto windows che sotto linux ci sono funzioni del
sistema operativo che ti permettono di ottenere la dimensione di un blocco
allocato. Forse ti conviene cercare su Google nei post di qualche tempo fa
per sicurezza =P
'sera lietissima, Marco

   sizeof ti da la dimensione in byte del tipo dell'array se non erro
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: ISAPI e ISessionObject

Dunque... Sto scrivendo un'ISAPI Extension in C senza l'uso di librerie (no
MFC o VCL)... In realtà l'ho già finito e funziona benissimo... Il problema
è che mi devo collegare a degli ASP... Per essere più precisi, devo leggere
una variabile di sessione che non può essere semplicemente passata come
parametro all'ISAPI (questioni di sicurezza!)... Ho guardato sull'msdn e,
dopo lunghe ricerche, ho scoperto che vi è quest'interfaccia COM:
ISessionObject... Il problema è che io non ho mai dovuto lavorare con il COM
(in questo caso sembra pure che centri il Microsoft Transaction Server!!) e
quindi non so neanche da dove iniziare... L'unica cosa che sono riuscito a
capire è che devo fare una bella CoInitialize(NULL) una sola volta nella DLL
(non per thread... Una volta e basta) e quindi l'ho messa nel
GetExtensionVersion e, se la CoInitialize ha avuto successo, devo fare una
CoUninitialize() quando la DLL viene scaricata... E quindi l'ho piazzata
nella TerminateExtension... Non mi dite che la cosa non è veloce, perchè non
mi interessa (con tutto il tempo che perdo a fare interrogazioni SQL,
generare un grafico e soprattutto comprimerlo in GIF, qualche frazione in
più di secondo non mi spaventa!)
Bye
Max

,

Dunque, secondo me l'oggetto "sessione" non e' accessibile da
ISAPI per il seguente motivo.
Quando scrivi un oggetto COM scriptabile, che viene creato
con Server.CreateObject nella tua pagina ASP, allora l'oggetto
Server implementato dallo scripting Host cerca un metodo
OnStartPage sul tuo componente COM scriptabile, e se lo trova,
passa al metodo OnStartPage un puntatore ad IUnknown al quale
puo' essere richiesta la interfaccia IID_IScriptingCotext,
che ti consente di avere gli oggetti intrinseci dello scripting
host, tra cui IServer, IRequest, IResponse, ISessione, eccetera.
L'utilita' di queste interfacce COM entro un componenente
COM scriptable usato da ASP e' notevole, dato che tu puoi
fare un IRespose::Write da dentro il codice C++ (in uno
dei tuoi metodi) senza invocare due volte la libreira di marshaling
per poter scrivere nalla pagina ASP Response.Write(MyCOM.MyMethod).
Cio' premesso, il tuo desiderio di usare ISessioObject da una
ISAPI mi sembra semplicemente un PIO desiderio.
Sent via Deja.com 
http://www.deja.com/
Before you buy.
Newsgroup: it.comp.lang.c
Titolo: Unione insiemistica Array di interi HELP!!!

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

 PErchč questa funzione di unione non funziona? non capisco
1)Intanto perche' mi sembra che usi sizeof in modo sbagliato.
Vai a ripassartelo sul manuale.
Almeno sul mio compilatore sizeof(insieme1) vale sempre 4
(cioe' la dimensione del puntatore che e' stato passato).
Mi sa che devi passare le lunghezze degli insiemi in modo esplicito.
E assolutamente non puoi fare i=sizeof risultato
come fa il complilatore a sapere quanti valori hai inserito in risultato
  ?
2)poi non inizializzi j nel ciclo while quindi puo assumere qualsiasi
valore.
3) la logica del for h dentro il while j e' completamente sbagliata:
tu per ogni elemento j dell'insieme 1 e per ogni elemento h dell'insieme
2 se sono diversi inserisci il valore nel risultato: praticamente ogni
valore lo inserisci una caterva di volte!
Seguendo la logica (comunque non efficiente) del tuo programma,
devi inserire un valore di insieme2 dentro risutato solo se e' diverso
da TUTTI i valori di insieme1 non se e' diverso da UN valore di
insieme1.
E in ogni caso non ha senso che confronti gli elementi di insieme 2 con
tutto il risultato costruito fino a quel momento: tanto vale 
confrontarli solo con gli elementi di insieme 1.
Se poi gli insiemi sono molto grandi e' molto piu' efficiente
ordinare prima gli insiemi e scandirli contemporamenamente, come in una
specie di mergesort (ma presumo
che questo sia un po' al di sopra di quello che ti hanno chiesto).
4) questo modo che hai di dichiarare le variabili in mezzo al codice
e' piu' da C++ che da C. Verifica se per caso il gruppo sul linguaggio
c++ e' piu' adatto alle tue necessita' e inclinazioni.
ciao,
g.

Newsgroup: it.comp.lang.c
Titolo: problema con le stringhe.

Salve a tutti vi scrivo per sottoporvi un problema che sulle
stringhe:premetto che sono abbastanza newbie. Il problema č questo: devo
memorizzare in un array di tipo stringa una frase che poi devo scandire con
l'uso dei puntatori.Ora, se procedo cosě:
#include<stdio.h>
main(){
int n,i;
char parola[15],*s;
char frase[]="oggi piove";
i=0;
s=frase;
printf("%c",*(s+7));
}
ovvero la frase viene inserita all'interno del programma, tutto funziona
bene e mi viene restituito in ouput l'ottavo elemento dell'array.
Se invece faccio cosě:
#include<stdio.h>
main(){
int n,i;
char parola[15],*s;
char frase[50];
printf("%s","Inserire la frase...");
scanf("%s",&frase);
i=0;
s=frase;
printf("%c",*(s+7));
}
ovvero i dati li inserisco in fase di run-time, il programma funziona solo
se inserisco parole singole ovvero stringhe senza spazi. Come posso
risolvere?
Grazie.
Arsenio

 ha scritto nel messaggio
news:bjnfp8$eer$1...@lacerta.tiscalinet.it...

con fscanf(char *s, int n, FILE *stream)
nel tuo caso:
fscanf(frase,49,stdin);
come dimensione ho messo 49 perchč la fscanf come ultimo elemento inserisce
uno '\n'.
se vuoi fare cinquanta devi dichiarare l' array di 51 elementi.
ciao....

 ha scritto nel messaggio
news:NyH7b.308152$Ny5.9...@twister2.libero.it...

scusa stavo pensando a fscanf e ho scritto fscanf
correzione:
 con fgets(char *s, int n, FILE *stream)
 nel tuo caso:
 fgets(frase,49,stdin);


 risolvere?
scanf() funziona cosi`, legge una sola parola alla volta. La soluzione 
e` usare fgets().
-- 
Enrico 'Trippo' Porreca

  se vuoi fare cinquanta devi dichiarare l' array di 51 elementi.
Se vuoi fare 50 caratteri *compreso il newline* allora devi dichiarare 
l'array di 51 elementi.
-- 
Enrico 'Trippo' Porreca

 Legge 49 caratteri compreso il newline, lasciando spazio per lo '\0'.
In che senso???

 scanf("%s", frase);
scanf("%s",&frase);
e
scanf("%s",frase);
non č la stessisima cosa???

 non è la stessisima cosa???
No, ed infatti il mio compilatore (gcc) genera un warning (conversione 
di formato e parametro di tipo diverso).
frase e` un array di char, e quindi viene passato come puntatore a 
frase[0]. &frase e` un puntatore ad un intero array. L'indirizzo e` lo 
stesso (ed e` per questo che di solito entrambe le soluzioni funzionano, 
se entrambi i puntatori hanno la stessa dimensione come avviene spesso), 
ma il tipo e` diverso. Vedi 
http://www.eskimo.com/~scs/C-faq/q6.12.html
Per questo la prima chiamata e` concettualmente (e 
`standardisticamente') sbagliata.
-- 
Enrico 'Trippo' Porreca

 In che senso???
Data la seguente definizione:
char s[50];
la chiamata:
fgets(s, 50, stdin);
legge fino a 49 caratteri (compreso il newline se c'e`). In questo modo 
rimane sempre almeno uno spazio per metterci lo '\0'.
-- 
Enrico 'Trippo' Porreca
Newsgroup: it.comp.lang.c
Titolo: errore con inp()

Buongiorno a tutti:
Ambiente LCC-Win32
Se compilo un semplice programma con
void Check_LPT()
{
 int unsigned short LPT_Port = 0x408;
 unsigned Byte_R_W = 0x44;
 inp(LPT_Port);
}
quando eseguo la funzione ottengo un messaggio di errore di
sistema del tipo: "prova.exe ha provocato errori e verrà chiuso  ecc"
Questo sia in ambiente win98 che win2000.
Qualche idea?
grazie - S.
--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it

Qualche idea?
non puoi accedere direttamente alle porte come con il beneamato dos,
quindi o scrivi un driver di periferica (ed allora accedi alle porte)
oppure utilizzi le API di windows
ciao

Newsgroup: it.comp.lang.c
Titolo: ragazzi mi serve aiuto

Ragazzi sto impazzendo
porgo questo problema !!!!
2) Leggere da tastiera un numero intero e scriverlo
sullo schermo come numero romano.
Si affronti il problema in forma semplificata:
- Il numero sia minore di 40
- Il 4 venga scritto IIII
- Il 9 venga scritto VIIII
non ho idea da dove partire
mi sto concentrando sull'istruzione scanf e printf pocredo giusto?
qualcuno mi può portare sulla giusta strada!!!!
in internet ho trovato il caso inverso da numero romano a intero!!!! si può
modificare per ottenere quello che volgio?

 
e' talmente semplice che e' piu' semplice affrontare il problema
da zero.. pensaci un po'.. per esempio..
37 --> 3 decine + 7 unita' -- XXXVII
quindi.. potresti fare cosi':
- se il numero e' composto da 2 cifre numero[0] puo' essere
   usato come indice in un for per stampare 'X'
- numero[1] puo' essere usato come indice in un for per
   stampare I. naturalmente qui devi avere un
   if( unita < 5 ) ... else ...
- se il numero e' composto da una sola cifra, allora e' ancora
   piu' semplice.. numero[0] sono le tue unita'
buon lavoro
-- 
                Roberto Nunnari -software engineer-
                     mailto:
ro...@nunnisoft.ch
 
http://www.nunnisoft.ch
   Residenza Boschetto 12           tel/fax: 
+41-91-6046511
   6935 Bosco Luganese        """    mobile: 
+41-76-3208561
   Switzerland               (o o)
========================oOO==(_)==OOo========================

 - se il numero e' composto da 2 cifre numero[0] puo' essere
come fa a controllare se è composta da una cifra o due cifre? Inoltre e
soprattutto come fa a dividere le decine dalle unità?

 soprattutto come fa a dividere le decine dalle unit??
Con la divisione?
int a = 12345;
int numero[100];
int c = 0;
while(a) {
        numero[c++] = a % 10;
        a /= 10;
}
Luca
-- 
Home: 
http://kronoz.cjb.net
Se non puoi convincerli, confondili.

 non ho idea da dove partire
la butto lě, č squanfida ma veloce:
crei una routine che legga da tastiera il numero. Quel numero lo userai
come indice di un vettore di stringhe, contenenti la versione romana del
numero digitato e poi stampi la stringa selezionata a video :-)
Newsgroup: it.comp.lang.c
Titolo: Gestire gli sprite con SDL

In questa guida viene spiegato il concetto di sprite e vengono realizzate
le classi necessarie ad una corretta gestione dell'oggetto con SDL. In
particolare vengono gestite 3 animazioni su di uno sfondo.
  < 
http://www.siforge.org/articles/2004/05/31-sdl_sprite.html
 >
Colgo l'occasione per segnalarvi che GaraGuru continua e avete tempo fino
al 15 giugno per consegnare le vostre risposte (e vincere dei libri)!
  < 
http://www.siforge.org/articles/2004/05/10-garaguru.html
 >
Buona lettura!
Marco
-- 
//\/\ Marco (LM) Lamberto (
marcol...@despammed.com
)
      SIForge.org     -  
http://www.siforge.org/
      The Sunny Spot  -  
http://the.sunnyspot.org/

   < 
http://www.siforge.org/articles/2004/05/31-sdl_sprite.html
 >
Stai rispondendo a qualche persona o.... hai creduto che SDL fosse di
interesse di tutti su di un NG di C ?
Tommy

Newsgroup: it.comp.lang.c
Titolo: Problemi con malloc

Ciao a tutti...
Io avrei il seguente problema con l'istruzione "malloc".
Lavoro sotto Sun Solaris 5.7 e saltuariamente, a quanto mi pare di capire,
questa istruzione
mi provoca un crash del programma:
pElem->Msg.cDati = (char*)malloc(nSize);
Verificando con il debugger ho notato che l'argomento della funzione è un
intero corretto, ed
il debugger (dbx) mi restituisce queste informazioni sullo stack delle
chiamate:
[1] t_delete ( .......)
[2] realfree  (0x1afbd0, 0x1b14f0......)
[3] _malloc_unlocked (0x0, 0x38, 0x1afb88, 0x1afb88, 0xff232584)
[4] malloc (0x38, 0xffbef734, 0x0, 0x0, 0x39, 0xffbef640)
[5] Fifo_Write (pLista=0x1e2298, nSize=56, Pkt=0x97a4)   [Mie funzioni]
[6] RiceveDati ( ....)
[Mie funzioni]
Qualcuno saprebbe aiutarmi?

 pElem->Msg.cDati = (char*)malloc(nSize);
Comincia col togliere il cast a char *. Ti ricordi di dare il free()
quando la memoria non ti serve più?
EMG
Newsgroup: it.comp.lang.c
Titolo: QuickSort

Avevo bisogno di qualche spunto per convertire un quiksort, in un algoritmo
equivalente non ricorsivo.

 equivalente non ricorsivo.
Già è stato discusso tale problema!!!
ciaoo

 algoritmo equivalente non ricorsivo.
C'e' un thread di poco tempo fa' che spiegava come fare.
L'unico modo e' tener traccia delle informazioni per la successiva chiamata
ricorsiva in uno stack.
Nel caso particolare devi salvarti nello stack gli indici dell'array per le
varie chiamate.
Ti faccio un esempio in pseudocodice.
/* s = Stack() -> lo stack di appoggio
 * array -> l'array da ordinare
 * la push memorizza in un singolo record dello stack tutti
 *     i parametri passati
 * la partition e' uguale a quella del quicksort ricorsivo
 */
s.push(0, len(array)-1)
while not s.is_empty()):
    left, right = s.pop()
    cd = partition(array, left, right)
    s.push(left,cd-1)
    s.push(right,cd+1)
L'ho scritto a memoria, potrei ricordarmi male l'algoritmo (spero di no) :)
In pratica ad ogni ciclo per prima cosa fai una pop (emuli l'ingresso nella
funzione, a seguito di una delle chiamata ricorsive) e al posto delle
chiamate ricorsive fai una push di tutti i parametri che ti serviranno per
la prossima iterazione.
-- 
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."

 equivalente non ricorsivo.
Beh, ti fai una coda generica (la migliore da scegliere è uno stack, ma non
fa differenza) di strutture contenenti l'inizio e la fine dell'intervallo da
ordinare, e lo inizializzi con un oggetto che contiene l'indice del primo e
ultimo elemento, poi procedi togliendo un'elemento dalla coda finché ce ne
sono, scegli un'elemento partizionatore (a caso, sennò in input bastardi
degeneri in O(n^2) ) e fai la solita roba di spostarli tutti e poi prendi le
due metà e le aggiungi alla coda. Ovviamente se la lunghezza dell'intervallo
è <2 non lo processi.
Spero che lo fai solo per esercizio, visto che qsort è un algoritmo
ricorsivo, e lo stack internamente è sempre presente e non è il massimo fare
a mano quello che ti fa il computer da solo...
ciao
Newsgroup: it.comp.lang.c
Titolo: Comunicazioni tra processi concorrenti e comunicanti

Ho bisogno d'aiuto per questo progetto:
Devo specificare, progettare e realizzare in linguaggio C (sistema operativo
UNIX) un ambiente dimostrativo delle comunicazioni tra processi concorrenti
e comunicanti. Devono essere previsti i seguenti tre tipi di processi:
1. Il processo ufficio postale. Deve ricevere i messaggi dagli altri
processi e deve smistarli ai destinatari in base all’intestazione dei
messaggi stessi.
2. Il processo interfaccia utente. Deve gestire l’interazione con l’utente,
ovvero acquisire dall’utente il messaggio da inviare, completo dell’
identificatore del processo destinatario. Deve inviare tale messaggio al
processo ufficio postale. Deve ricevere eventuali messaggi dall’ufficio
postale e visualizzarli.
3. Il processo archiviatore. Deve ricevere i messaggi ad esso destinati
provenienti dall’ufficio postale ed interpretarne il contenuto. Il processo
deve memorizzare tutti i messaggi. Se il messaggio contiene la richiesta di
ritornare l’elenco dei messaggi memorizzati al processo interfaccia utente,
il processo archiviatore deve costruire e inviare un messaggio contenente la
prima riga di ciascun messaggio memorizzato fino a quel momento. Se il
messaggio contiene invece la richiesta di azzerare la lista dei messaggi
memorizzati, il processo archiviatore deve rimuovere i messaggi memorizzati
fino a quel momento.
Devo creare una istanza del processo interfaccia utente e del processo
ufficio postale e almeno tre istanze del processo archiviatore.
Ringrazio fin d'ora chi mi può essere d'aiuto.
Ciao
Luca
ago...@ns.spm.it

Ringrazio fin d'ora chi mi puň essere d'aiuto.
Che tipo di aiuto?  Sembri avere gia` fatto un'architettura
dettagliata ed esauriente.  Devi solo decidere quali delle
tante primitive a tua disposizione su Unix usare per scambiare
i singoli messaggi.  Suggerirei le socket, piu` portatili; puoi
usare select fra tante socket aperte (e altri file descriptor)
per aspettare il prossimo evento.  Se il processo interfaccia
utente usa Xt Intrinsics o qualsiasi schema basato su di essi,
come Motif, puoi passare all'opportuna chiamata Xt il fd
della socket aperta e fare gestire da una callback qualsiasi
input che avvenga sulla socket stessa; gli altri tipi di processi
possono fare delle select "nude"...
Alex

Salve,
sono diponibile a scambiare opinioni e consigli utili sull'argomento
socket. Argomento incluso nella mia tesi e che mi sta dando qualche
noia, purtroppo!
Ciao,
Emilio Merlino
--
Automatic posted from 
mailhost.univaq.it
 [192.150.195.13]
via Mailgate Server - 
http://www.mailgate.org

noia, purtroppo!
Tipo...?
Alex
Newsgroup: it.comp.lang.c
Titolo: Dove una descrizione delle librerie standard del c ?

Salve a tutto NG volevo sapere dove posso trovare un documento che mi parli
di tutte le librerie di sistema del c possibilmente in italiano.
Mi conviene un manuale, o posso trovare qualcosa in rete ?
Ringrazio anticipatamente per l'aiuto.
                      Max
 
pa1...@iperbole.bologna.it

Mi conviene un manuale, o posso trovare qualcosa in rete ?
Per le librerie standard c'e' il K&R (un po' stringata ma completa).
Se no online (in inglese):
http://www.infosys.utas.edu.au/info/documentation/C/CStdLib.html
http://www.dinkumware.com/htm_cl/index.html
Mox

Newsgroup: it.comp.lang.c
Titolo: Qualcuno conosce ADS o ARX

Sono un programmatore AutoLisp ormai stanco di parentesi e programmazione
non ad oggetti; ho intezione di passare al C o C++ per utilizzare ADS o ARX
(con la R.14 di AutoCad è possibili utilizzare anche il VisualARX con VC++
5.0) ma oltre a non conoscere nessuno dei 2 linguaggi non conosco nemmeno
il modo per integrare il C nell'AutoCAD; sarei lieto di avere qualsiasi
tipo di notizie a riguardo; 
Filippi Davide 
EMail : <Filip...@CTrade.it>


Io utilizzo Visual C++ v. 4.2b di Microsoft per creare gli eseguibili
ARX. Nel file acaddrv.hlp e acadarx.hlp nella directory help di autocad
troverai buone informazioni per iniziare a lavorare con gli arx.
Ritengo più semplice la programmazione in C rispetto a quella in Visual
Basic in ambiente Autocad, quindi condivido la tua scelta. Tieni
presente che ci sono ottimi esempi già pronti nella cartella arx (o ads)
di autocad, inizia con quelli.
Se hai problemi puoi contattarmi anche per e-mail
Newsgroup: it.comp.lang.c
Titolo: codice in c

volevo gentilmente sapere dove potevo trovare codice in c in particolare
riguardante scambio di messaggi in ambiente unix tanto per prendere
spunto per delle cose.Grazie a.

 spunto per delle cose.Grazie a.
Sei OT, per unix: o vai su linux e allora it.comp.os.linux.development, o su
unix cerca un po', ma linux è + diffuso e abbastanza standard, quindi andrà
bene. Ciao
--
Paolo Giarrusso
Per rispondere togliere solo "TOGLIMI" dall'indirizzo, non _spam.
Newsgroup: it.comp.lang.c
Titolo: Puntatore a funzione

Su una guide vi è scritto:
             char *(*funcs[2][2])(char *ptr) = {
        {hideLetterInc, sayLetterInc},
        {hideLetterNextLine, sayBarLetterInc}
};
Capisco che  char *(*funcs[2][2])(char *ptr) è un puntatore a funzione ma,
cosa viene assegnato? Non capisco!
Rispondete grazie :))
----------------------___-__-_____-___-__------------------

 funzione ma, cosa viene assegnato? Non capisco!
E` una matrice di 4 puntatori a funzione.
-- 
Per l'e-mail rimuovere la frase in maiuscolo e gli underscore.

cosa viene assegnato? Non capisco!
funcs è una matrice di 2x2 = 4 puntatori a funzioni che accettano un
puntatore a carattere e restituiscono un puntatore a carattere.
L'assegnazione equivale a:
funcs[0][0] = hideLetterInc;
funcs[0][1] = sayLetterInc;
funcs[1][0] = hideLetterNextLine;
funcs[1][1] = sayBarLetterInc;
-- 
Andrea Laforgia
Open Delphi Manual
http://groups.yahoo.com/group/delphi_open_manual/

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

Ho una domanda da farvi:
se io cambio in un programma dos funzionante sotto W95
la routine d'interrupt associata
alla pressione dei tasti questo provoca il non funzionamento(o un
funzionamento
anomalo) della tastiera negli altri programmi?
Un'altra cosa:
{
..............................
   unsigned long conta=0;
   conta=(unsigned long) *buffer_out;
printf("conta=%ld\n",conta);
..............................
}
buffer_out e' un puntatore ad un buffer definito come
static char *buffer_out;
La printf a volte mi stampa valori negativi,come puo' accadere cio'
se conta e' dichiarato unsigned?
Ho risolto il problema con l'istruzione
   conta=conta & 0xffL;
pero' vorrei capire perche' conta diventa negativo.
Grazie
Ciao
Bi...@tin.it

se conta e' dichiarato unsigned?
perche' non conta niente il tipo della variabile, e' importante solo
il codice di formattazione, invece di %ld prova %lu vedrai che
funziona.
Gianpaolo Bottin
- Live Long and Prosper -

 
Se la routine e' scritta "bene" non ci sono problemi. Basta pero'
inserire nella nuova routine una istruzione del tipo "outportb" mettendo
nella porta della tastiera il valore 0x00 per bloccare completamente
win95. 
\Stefano Costa
 \
sco...@enjoy.it
-/
cos...@odino.unipv.it