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

...dove scaricarlo?
Grazie per l'attenzione

 ha scritto nel messaggio
news:3b431...@news.dada.it...


Newsgroup: it.comp.lang.c
Titolo: Ciclo con creazione di thread e pause random

Salve a tutti.
Avrei necessità di realizzare un ciclo continuo nel main del mio
programma che generi un nuovo thread ad ogni passaggio del ciclo con
pause pseudo-random.
Qualcuno può darmi una mano?
Grazie mille.

pause pseudo-random.
Così dovrebbe andare:
MioThread t=null;
while(true){
    /**voglio aspettare da "x" a "y" secondi con x<y; G=(y-x)*1000, 
T=x*1000  */
    int dormo=(int)(Math.random()*G)+T;
    try{
        sleep(dormo);
    }
    catch(Exception e)
    {
         e.printStackTrace();
    }
    t=new MioThread();
    t.start();
}
Non l'ho provato ma penso sia corretto...
Ciao
Cendo

 Non l'ho provato ma penso sia corretto...
scusa ma mi sono appena svegliato: pensavo di essere su 
it.comp.JAVA!!!!!!!!!!!!!!!!!!
Ciao

Newsgroup: it.comp.lang.c
Titolo: socket: tutorial in italiano?

ciao
 cercavo un tutorial in italiano sulle socket. L'ideale
 sarebbe un qualacosa  sul modello di Tricky C, che vorrei
 consigliare a tutti quelli che vogliono andare in profondita'
 ma in maniera informale.
Enrico

  cercavo un tutorial in italiano sulle socket.
In italiano?  Vuoi forse troppo.  Guarda la FAQ list delle socket su
comp.unix.programmer: 
http://kipper.york.ac.uk/~vic/sock-faq/
 .
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

Enrico Migliore wrote:

Ciao prova sul sito 
www.spippolatori.com
,oppure cerca le e-zine tipo
system down,wannabe, etc che nonostante i nomi sono tutte italiane

Newsgroup: it.comp.lang.c
Titolo: AIUTOOO non riesco a far funzionare il djgpp

Ciao a tutti.
Ho un problema e spero che qualcuno di voi mi possa aiutare.
Iniziamo.........un bel giorno ho deciso di iniziare a fare qualche
programmino ho fatto qualche ricerca e ho chiesto consigli, mi hanno
consigliato il DJGPP.
Ho fatto tutto quello che mi hanno detto, scaricato i files zippati (82 mega
e piů) li ho decompressi nella directori consigliata (DJGPP) ho messo le
righe sul autoexec.bat etc etc ma non c' č nulla da fare non riesco a
compilare.
Mi hanno detto che dovevo scaricare il RHIDE per editare ......l' ho fatto
ed l' ho provato ma nulla.
Ora io vi chiedo............qualcuno mi potrebbe dire i files da scaricare,
dove scaricarli, e tutte le prassi per farlo funzionare?
Vi prego non mi rimandate in un sito inglese (non lo capirei).
Vi ringrazio anticipatamente per la risposta e spero che mi possiate dare
una
mano.
Ahh ....... dimenticavo..nel mio libro di programmazione in C dicono di
iniziare il programma con una parentesi graffa č vero? e se si perchč il
rhide non me la fa?
Ciao ciao e di nuovo grazie
Newsgroup: it.comp.lang.c
Titolo: Cerco librerie per il C++

Salve,
devo calcolare in C++ la funzione "chiquadro" (relativa al calcolo di
distribuzioni gaussiane).
Qualcuno conosce librerie da poter utilizzarer in C++ per calcolare
questa funzione?
Grazie,
Luca


cerca tra i sorgenti di 'numerical recipes in C' 'noto' testo di calcolo 
numerico oppure su 'netlib'
una ricerca su google con queste parole ti dovrebbe facilmente 
permettere di rintracciare i siti di riferimento

 numerico oppure su 'netlib'
Attenzione che "Numerical Recipes" ha una licenza capestro. Conviene
stare lontani dal loro codice.
Ciao,
Nicola

Newsgroup: it.comp.lang.c
Titolo: Programma di lettura di un file...che non funziona

Salve a tutti.
Ho iniziato da poco a "giocare" con le funzioni I/O.
Per provare sto cercando scrivere un programma che legga il file
passato come parametro e lo visualizzi sulla console; per intenderci
una sorta di "cat".
Quando lo compilo non ci sono errori ma quando lo eseguo e gli passo
il parametro mi da errore "Segmentation fault".
Ecco qui il codice:
/*Description:	Il programma stampa sullo schermo il file che viene
passato come parametro.
Sintassi:		$readf [Opzioni][Nome_File]
				Opzioni: al momento non sono definite opzioni
				Nome_File: File o indirizzo del file da aprire
Note:			Compilazione: $gcc -ansi readf.c -o readf
*/
#include<stdio.h>
#include<fcntl.h>
int main(int argc, char *argv[]){
	FILE *fp;
	/*Controlla che sia stato inserito almeno un parametro*/
	if(argc>1){
		/*Apre il file*/
		if((fp=fopen(argv[argc-1], O_RDONLY))==NULL)/*<--L'errore
		avviene
		qui*/{
			/*Se fd==-1 allora il file non esiste, errore*/
			printf("Nessun file trovato\n");
			/*Esci dal programma*/
			return 0;
		}else{
			int temp;
			/*Altrimenti il file è aperto */
			printf("Apertura di \"%s\"\n\n", argv[argc-1]);
			/*Lettura dei caratteri e stampa dino a EOF*/
			while((temp=fgetc(fp))!=EOF)
					putchar(temp);
			/*Chiude il file*/
			fclose(fp);
		}
	}else{
		/*Nessun parametro trovato, stampa il messaggio di errore ed esce*/
		printf("Nessun parametro\n");
		return 0;
	}
}/*Fine della funzione main*/
Mi aiutate a trovare l'errore perfavore??
Grazie a tutti :)


fopen
SYNOPSIS
fopen(const char *path, const char *mode);
e O_RDONLY non è un const char *
Ciao!


Grazie il programma inizia a fare qualche passetto in avanti.
Ho modificato cosi:
fp=fopen(argv[argc-1], "w");
ma ora noto che quando si inserisce il nome file, se esiste ne
cancella tutto il suo contenuto, al contrario se il file non è
presente lo crea.
Come si può risolvere il problema?
Infine a problema risolto, quando la fopen cercerà di aprire un
fileinesistente, la variabile puntatore FILE *fp che valore deve
ridare?
Grazie

 Come si può risolvere il problema?
Hai gia' fatto un passo avanti, usando "w" al posto di O_RDONLY.
Rileggi meglio l'help e vedrai che "w" e' per aprire il file
in scrittura (ecco perche' di azzera tutto) tu devi aprire
il file in lettura.
ciao
Giacomo

On 13 Nov, 21:39, Giacomo Degli Esposti

Infatti si, ho fatto un errore moolto grave.
:P grazie
Newsgroup: it.comp.lang.c
Titolo: Dove sta il problema?

Da pochi giorni ho istallato linux ed ho provato a compilare qualche
semplice programma in c con gcc; tutto bene, nessun errore rilevato nella
compilazione, la generazione del file eseguibile avviene correttamente, ma
scrivendo il nome del file ottenuto non succede niente! Perché?

 ha scritto nel messaggio
news:EE8U6.755$fG4....@news.infostrada.it...

devi precedere il nome da ./ (punto e slash)
es: ./a.out
Alex



Perche' il path da cui eseguire il programma non e' esplicito come in
DOS/Windows, devi specificarlo.
In DOS scriveresti (e non e' necessario) :
.\miofile.exe
Che significa "esegui miofile.exe dalla directory corrente".
Siccome sotto Unix/Linux, il back-slash si traduce in un semplice
slash, devi scrivere :
./miofile
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

Grazie mille!!! Ora funziona tutto!

Newsgroup: it.comp.lang.c
Titolo: librerie matematiche

Ciao a tutti,
sapete suggerirmi dove trovare una libreria C gratis che mi permetta di
risolvere dei sistemi di equazioni non lineari?
Grazie :-)


Fra le funzioni che si trovano nel libro
"Numerical Recipes in C"
credo che ci sia anche quella che cerchi,
e credo che sia gratis.
Il libro lo trovi al sito
http://www.ulib.org/webRoot/Books/Numerical_Recipes/
e puoi scaricare i capitoli in formato ps o pdf.
oppure potresti scaricare la libreria CLAPACK (gratis).
La CLAPACK e' stata ottenuta dalla LAPACK, che e' una BELLISSIMA
libreria scritta in fortran.
http://www.netlib.org/lapack/
ciao
Davide

Newsgroup: it.comp.lang.c
Titolo: scanf("%c"...??????????????

Qualcuno sarebbe così gentile da spiegarmi perchè il seguente programma
non funziona?
#include <stdio.h>
main() {
char lettera;
char operatore;
printf("inserisci lettera  ");
scanf("%c",&lettera);
printf("\nInserisci operatore\n ");
scanf("%c", &operatore);
printf("\nLETTERA = %c\n",lettera);
printf("\nOPERATORE = %c\n",operatore);
}
Grazie.
Daniela
-- 
Posted from 
esmtp.its.it
 [151.92.2.140] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 }
  Non usare scanf(), getc() va benissimo per il tuo caso. 
  Inoltre, la prima printf() non opera il flush del buffer, per cui a
video non viene stampata la richiesta prima della seconda printf(). Usa
fflush() oppure termina la stringa con '\n'.
  Infine, main() ritorna un intero, per cui aggiungi anche
	return 0;
al termine del programma.
	Alla prossima,
		Marco

 wrote in message
3AE59FDD...@alstomferroviaria.it...
Qualcuno sarebbe cosě gentile da spiegarmi perchč il seguente programma

Newsgroup: it.comp.lang.c
Titolo: Sincronizzazione stream di I/O

Ho un problema abbastanza complicato. Sotto windows95 devo far
chiamare dal mio programma un altro programma  (un filtro grafico) ed
uso sytem("filter infile outfile"); Il problema e' che quando apro
l'outfile (l'istruzione successiva) la open fallisce, evidentemente
perche' il file non e' ancora stato scritto su disco. Ho risolto il
problema mettento la open in loop finche' non ha successo (un po'
sporco ma funziona). Pero' non ho risolto completamente il problema,
perche' subito dopo devo leggere la dimensione del file e mi viene 0.
Anche qui il problema e' risolvibile con un loop, solo che quando il
file e' ababstanza grande non e' detto che la dimensione letta diversa
da zero sia effettivamente quella vera (se il sistema deve fare piu'
di una write per scrivere su disco ed io leggo in mezzo alle write mi
ritrovo una dimensione maggiore di zero ma non quella giusta.)
Esiste un modo pulito per evitare tuti questi casini?
Lockare il file prima di aprirlo servirebbe a qualcosa (in praticami
chiedo se il lock fallirebbe finche' il SO non finisce di farci le sue
porcherie)?
Grazie per l'aiuto
___
Fabio Forno
+++++++++++++++++++++++++++++++++++++++++++
Votate per it.cultura.fantascienza.startrek
(per votare sottoscrivete it.news.annunci)
+++++++++++++++++++++++++++++++++++++++++++
  "Vi aspetta l'esplorazione delle ignote 
  possibilita' dell'esistenza" 
  - Q in "All Good Things..."
=============================================
scia...@inorbit.com
http://rampage.ml.org/sector1/~sciasbat/
=============================================

Invece di utilizzare la funzione system()
puoi provare con una delle funzioni _spawn..
utilizzando il mode _P_WAIT il programma non esegue l'operazione successiva
finchè il processo lanciato dall spawn non finisce.
int _spawnl( int mode, const char *cmdname, const char *arg0, const char
*arg1, ... const char *argn, NULL );
_P_OVERLAY Overlays calling process with new process, destroying the calling
process (same effect as _exec calls).
____________________________________________________________________________
____________
_P_WAIT Suspends calling thread until execution of new process is complete
(synchronous _spawn).
____________________________________________________________________________
_____________
_P_NOWAIT or _P_NOWAITO Continues to execute calling process concurrently
with new process (asynchronous _spawn).
_P_DETACH Continues to execute the calling process; new process is run in
the background with no access to the console or keyboard. Calls to _cwait
against the new process will fail (asynchronous _spawn).


Infatti alla fine ho fatto cosi', grazie. 
___
Fabio Forno
=============================================
Votate per it.cultura.fantascienza.startrek

Newsgroup: it.comp.lang.c
Titolo: Re: Come fare per ottimizzare questo codice

 supponete di avere il seguente codice:
????


è così timido che ogni volta ci ripensa :D Scherzooo...
-- 
Computer multitasking: oggetto che
può essere messo fuori uso da più
persone contemporaneamente.

Ciao a tutti,
supponete di avere questo codice:
// im è un'immagine di larghezza w ed altezza h, cioè un'array w*h di
chars
// x ed y sono le coordinate di un pixel
// test è un'array di strutture pixel_t, dove
// typedef struct
// {
//  int x,y;
// } pixel_t
//
// P è un array di 10 unsigned int
//
int v1,v2,v3, g;
v1 = im[(y + tests[0].y1)*w + (x + tests[0].x1)];
v2 = im[(y + tests[1].y1)*w + (x + tests[1].x1)];
g = 2;
for ( k = 0; k < 10; k++ )
{
	for ( j = 0; j < 16; j++)
	{
                                v3 = im[(y + tests[g].y1)*w + (x +
tests[g].x1)];
		if (v1 <= v2)
			val = val | (1 << (j<<1));
		if (v2 <= v3)
			val = val | (1 << ((j<<1)+1));
		v1 = v2;
		v2 = v3;
                                g++;
	}
                P[k] = val;
}
C'è un ciclo esterno su k (10 loops) e su j (16 loops). In totale 160
loops. La variabile v3 viene caricata
una volta nel ciclo su j, quindi si accede al buffer im 160 volte (+2
accessi esterni al cilco k). Il problema è che quando  vado a vedere
il codice assembly, vedo che gli accessi ad im sono 3 all'interno del
ciclo sul j.
Cioè, è come se v1 e v2 non venissero usate (in realtà preferirei che
val, v1 e v2 fossero dei registri).
L'obiettivo è quello di accedere a im il minor numero di volte
possibile e questo codice mi andrebbe pure bene
se non fosse per il problema succitato.
C'è una soluzione (indipendente dal compilatore magari)???
Ho provato l'uso della keyword register su val, v1,v2 e v3 ma
niente...
Grazie,
Luca


Se il compilatore lo fa ci sarà un motivo... comunque se il problema
persiste e devi "forzare" un po' il minor accesso al quello specifico
buffer (e quindi suppongo che sia un qualche dispositivo esterno su
una qualche piattaforma embedded) credo l'unica sia tramite un
puntatore virtual.
Prova a mettere il valore, invece che in un intero, in una locazione
puntata da un putatore virtual e utilizza quello nel ciclo: questo è
l'unico modo che mi viene in mente su due piedi per "costringere" il
compilatore a far fare al codice finale un accesso da lì (la parola
chiave register è da considerarsi solo un suggerimento).
Ciao!

Curiosita': che comando hai usato per compilare?
Pleg

 niente...
Prova a dichiarare "mutable" l'array im.
E.


"mutable" non esiste in C
Ciao!

FtM ha scritto:

Volevo dire "volatile" !
E.


sì beh, è più o meno quello che gli avevo suggerito sopra, anche se mi
accorgo ora che ho scritto "virtual" al posto di "volatile" - che
vergogna! :)
Per riscriverlo in maniera decente, direi che più che fare im
volatile, occorre fare un accesso alle var. temporanee tramite un
puntatore volatile.
Ciao!

 val, v1 e v2 fossero dei registri).
magari stai leggendo male l'assembly, prova a postarlo.
Ciao Jack
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?
Newsgroup: it.comp.lang.c
Titolo: pkunzip *.zip

Come cavolo si fa a fare un programma in C che accetti come argomenti il
come generico con * o ?.. devo farmelo a mano o esiste una chiamata a
qualcosa di gia' fatto????????
Nicola
-- 
Posted from 
smtp1.libero.it
 [193.70.192.51] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


«Se dio esiste, spero che abbia una scusa valida.»
(D. Pennac)

 qualcosa di gia' fatto????????
Nel vecchio TurboC bastava linkare il file WILDARGS.OBJ. Vedi se sul tuo
compilatore c'č qualcosa di analogo (magari uno switch). Comunque non fa
parte dello standard.
EMG

una chiamata a qualcosa di gia' fatto????????
nell'api di Win32 ci sono le funzioni FindFirstFile, FindNextFile e 
FileClose, e accettano le wildcard. Dovrebbe esserci qualcosa di simile 
in tutti i sistemi operativi
-- 
-----BEGIN GEEK CODE BLOCK-----
Version 3.1 (with proprietary extensions)
Comments: waiting for version 4.0 ;)
GE/M/S/O d- s:--- !a C++++()>$ UL P+>+++ L+>++ e w++>$ N++ o-- K- W++ O? 
M? V? PS++ PE- Y+>+++ PGP++ t+ 5? X++(+) R tv--  b++>++++ DI++ D++ G-- e 
h! !r xy**
------END GEEK CODE BLOCK------

Grazie del consiglio FOX.... il djgpp l'avevo e infatti adesso funziola alla
grande l'eseguibile usande il carattere *
Mi hai risparmiato non so quante ore di lavoro inutile.
Nick
-- 
Posted from 
smtp3.libero.it
 [193.70.192.53] 


che a volte può risultare d'impiccio? Grazie a chi mi risponderà.
man gcc
(se hai man e la man page di gcc)
sennò te la mando via posta convertita in html
è davvero TROPPO lunga da riportare tutta, la guida di gcc

Newsgroup: it.comp.lang.c
Titolo: DISSASEMBLER per 80x86:AIUTATEMI!

Ciao ragazzi!
Sono un giovanotto diciottenne che deve dare l'esame di informatica I
e che deve portare un programma fatto a casa come valutazione.
Io avevo pensato di scrivere un semplice dissassembler per 80x86
che riceve in input un file (name.exe o 
name.com
)  e in output dà un
file
con il testo dissassemblato (ad es name.asm).
Ora il problema è: dove trovo la documentazione?
Ho visto un po su internet per gli opcodes, ma non ho trovato nulla che
facesse per me. Mi occorre una documentazione MOLTO DETTAGLIATA
sul set di istruzioni dell'80x86 (soprattutto per quanto riguarda come
viene
codificato in L.M. un opcode, infatti su internet ho solo trovato lista
e descrizione
degli opcodes, senza la loro codifica in 1 e 0).
Grazie a tutti quelli che mi aiuteranno!
--
Posted from 
mta02-acc.tin.it
 [212.216.176.33]
via Mailgate.ORG Server - 
http://www.mailgate.org

...


Lascia perdere!
Dovresti studiarti troppa documentazione: il file .exe che pretendi di
disassemblare contiene un sacco di cose oltre al codice macchina, per cui
dovresti individuare queste e saltarle, cercare il punto di inizio del
programma e cominciare da li.
Ripeto: visto che non sei esperto ti consiglio di scegliere qualche cosa di
piu' semplice per il tuo esame.

Newsgroup: it.comp.lang.c
Titolo: Costanti carattere speciali

Mi è sorto qualche dubbio con i caratteri speciali:
1) quando possono essere utili questi: \b \r \0 ?
2) questi due che fanno: \f \v ?
3) si possono modificare le impostazioni di tabulazione (\t), e comunque a
quanti caratteri equivalgono?
4) queste costanti vengono considerati normali caratteri? Ad esempio, in
serendo \' come input, verrà memorizzato solo ' ? In tal caso, se inserisco
\a ?
5) Qual è lo scopo di \', se comunque si può inserire il singolo apice?
6) Come si usano \N e \xN?
Grazie,
--
Marco Iannaccone
ICQ: 18748121
IRC: Tolkien
e-mail: 
captai...@ussvoyager.com

6) Come si usano \N e \xN?
\N rappresenta un carattere in notazione ottale.
\xN rappresenta un carattere in notazione esadecimale.

 \xN rappresenta un carattere in notazione esadecimale.
Non č che potresti fare un esempio?


 6) Come si usano \N e \xN?
Bisogna specificare il codice del carattere.
EMG

Non č che potresti fare un esempio?
\120 rappresenta il carattere ASCII 81 (0*1 + 2*8 + 1*64) 
\x1a rappresenta il carattere ASCII 26 (a (=10) * 1 + 1 * 16)
Newsgroup: it.comp.lang.c
Titolo: Quale interfaccia grafica con il C ?

Da sempre uso come massimo di interfacce grafiche "Xdialog" e 
"gmessage", avendo qualche disagio a farle partire da C attraverso
snprintf e system. Python ha Tkinter; per il C niente di simile?
Non credo. Qualcosa di "embedded" ci sarà sicuramente.
 
 
-- 
Qui si usa Linux
http://www.puppylinux.org
 
http://www.italianpuppy.org
 


 
Quanti ne vuoi. La maggior parte delle GUI hanno bindings per il C, da
GTK a QT.
Ciao!

Newsgroup: it.comp.lang.c
Titolo: array di puntatori a stringhe

ehm scusate,
dovrei fare un array di puntatori a stringhe...
ma come???
cosě?:
char *a[MAX_LENGTH];
grazie


Bravo!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


bhč grazie,
ora perň ho un altro problema....
ho il mio bel array di puntatori a stringhe e lo passo a una funzione cosě:
int miafunzione ( ...,char *a[],...)
all'interno di questa costruisco delle stringhe e le associo all'array 
in questo modo:
a[i]=stringa;
al variare naturalmente dell'indice i...
perň poi tutte le locazioni del mio array contengono l'ultimo valore di 
stringa =(
cioč se faccio:
for (k=0;k<numero di stringhe;k++) {
		printf("%s\n",a[k]);
}
ottengo sempre la stessa stringa...
credo che il problema sia che associo ogni puntatore dell'array alla 
stessa locazione (stringa)...
come ovviare?
per la precisione ho dichiarato la stringa in questo modo;
char stringa[MAXSTRINGA];
e l'ho riempita cosě:
while(variecondizioni) {
...
c=getc(fileInput);
stringa[i]=c;
i++;
...
}
stringa[i]='\0';
i=0;
vi ringrazio in anticipo...


grazie per l'attenzione ma ho risolto :D

Newsgroup: it.comp.lang.c
Titolo: Problema nello Xor su stringhe : URGENTE!!!!!

Devo effettuare la scansione di una stringa e fare uno xor su ogni
carattere .
Il problema è che il primo carattere non viene letto correttamente .
Aiutatemi , vi prego!!!!!!!!1
    Andrea





Magari se postassi il codice che non va, potremmo aiutarti...
Andrea Laforgia

 Il problema č che il primo carattere non viene letto correttamente .
Non viene letto correttamente o non viene letto affatto? Nel secondo
caso potrebbe darsi che hai cominciato dal carattere 1 invece che dal
carattere 0? Es. tuastringa[ 1 ] č il secondo carattere e non il primo
che č tuastringa[ 0 ]. Nel primo caso, forse piů probabile, potrebbe
essere lo 'sforamento' di un altro array che va a sporcare il primo
carattere della stringa.
EMG


ICQ #34602650
Newsgroup: it.comp.lang.c
Titolo: help me

Aiuto aiuto
dal libro K&R sec. edizione linguaggio c
a pag 51
/* atoi: converte s in un intero */
int atoi(char s[])
   int i, n;
n = 0;
for (i = 0; s[i] >='0' && s[i] <= '9'; ++i)
    n = 10 * n + s[i] - '0';
return n;
scusate per le graffe ma non so come si fanno in outlook

scusate per le graffe ma non so come si fanno in outlook
Non le fai tranquillamente con ALT_GR+SHIFT+[ e ALT_GR+SHIFT+] oppure
con ALT+123 e ALT+125?
Mox :)

l'ASCII ma non hai nessuna garanzia che funzioni per altre codifiche,
No.
In realta', in tutti i set di caratteri la sequenza '0'..'9'
non e' mai interrotta.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

scusate per le graffe ma non so come si fanno in outlook
Immagino che tu parli di Outlook per Windows, vero?
alt sinistro + 123 sul tastierino numerico (aperta graffa)
alt sinistro + 125 sul tastierino numerico (chiusa graffa)

 ha scritto nel messaggio
news:CPVePOfYcHZMaL...@4ax.com...

non mi torna perche' quando vado ad eseguire con run
mi da erroe undefinidet... 0.asm
Newsgroup: it.comp.lang.c
Titolo: return type of main.

Salve.
In un programma c utilizzo la funzione main in questo modo:
void main(int argc, char *argv[])
In compilazione mi da un warning dicendo: "return type of main is not 
int".
Che vuol dire?
Grazie. 

 wrote:

Che bisogna essere :
int main(int argc, char *argv[])
Guarda la norma.
-- 
VOICI UN COMMUNIQUÉ DE LA SÉCURITÉ ROUTIÈRE :
« L'année dernière on a sauvé 30 millions de vies humaines. » C'est
malin, maintenant faut les nourrir !
COLUCHE : Et vous trouvez ça drôle

Che vuol dire?
Lo standard del linguaggio prevede che main DEBBA essere dichiarata
con un tipo di ritorno int.
Scrivere void main e' illegale. La giusta sintassi e' 
int main( int argc, char **argv )
{
}
La presenza di return 0 non e' importante, ma main, perche' si
adottino le giuste convenzioni di chiamata e di trattazione del codice
di ritorno, deve essere dichiarata con tipo di ritorno int.

}
Ok.
L'ho dichiarata int.
Ora pero' mi da questo warning:"control reaches end of non-void function".
Forse mi manca qualcosa?
Grazie.

Forse mi manca qualcosa?
Scrivi un po' di codice...

Andrea,

  Probabilmente, manca il /return/. ;)
  Ben trovati! :)
	Alla prossima,
		Marco

 Forse mi manca qualcosa?
Il return 0, o cmq return <int> alla fine del main; lo hai dichiarato
ritornare un intero, e un intero deve ritornare ;-)
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it

 Ciao, Bianco.
Ok. Non mi da piu' il warning.
Se non sbaglio pero' qualcuno aveva detto che sarebbe stato 
necessario dare il return 0 alla fine della funzione.
A quanto pare non e' cosi'. 

A quanto pare non e' cosi'. 
Se vuoi fare in modo che il sistema riconosca che e' andato tutto bene
devi mettercelo, ma non e' strettamente necessario ai fini del buon
funzionamento del programma.

 ha scritto:

Usando il flag -Wall con gcc, viene segnalato appunto che si raggiunge
le fine di una funzione "non void" senza che sia stato tornato alcun
valore: prbabilmente andra' tutto cmq, ma puo' capitare che compilando
con alti livelli di ottimizzazione qualcosa non funzi... (parlo per
esperienza)


esperienza)
Non credo proprio siano problemi dovuti a questo.  
I problemi che hai sperimentato sono sicuramente attribuibili ad altri
motivi.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------
Dovro' prendere lezioni di Internet, 
se non sai di Internet non ti considera nessuno 
(Carmen di Pietro) 
-----------------------------------------------

 motivi.
Aspetta, ho generalizzato: intendevo dire che se non vengono eliminati
tutti gli warning, e' possibile che compilando con ottimizzazione e'
possibile che ci siano dei problemi. Mi e' successo un paio di volte,
con programmi anche semplici.

Newsgroup: it.comp.lang.c
Titolo: calcolo geometrico

Ciao,
  sto cercando una libreria che mi permetta di fare calcoli geometrici
in modo veloce. Dal semplice calcolo di intersezione di due segmenti 
a modellazione 3D. Esiste qualcosa di gratuito o mi conviene farmi 
tutto da solo?
Grazie.
Matteo.

 ha scritto nel messaggio
news:986828593249...@inwind.it...

Se conosci Numerical Recipes dai un' occhiata lě....se non lo conosci fallo
su:
http://www.nr.com/
oppure dai un'occhiata su:
http://www.mathtools.net/
Spero possa servirti a qualcosa!
Newsgroup: it.comp.lang.c
Titolo: perchè?

innanzi  tutto ciao a tutti.
ho scritto il seguente codice:
----------------------------------------
#include <stdio.h>
int main(int argc, char *argv[])
{
 FILE *fp;
 int n;
 int char_count=0;
    char buff[100];   /*QUI NON MI TORNA*/
    if(argc<2)
 {
  printf("\nSpecifica il file\n");
  return 1;
 }
 fp=fopen(argv[1] , "r");
        if(fp==NULL)
  {
   printf("\nIl file non esiste\n");
   return 1; /*oppure exit(1)*/
  }
 do{
        n=fread(buff,1,100,fp);
  char_count+=n;
 }while(n!=0);
 printf("\nIl file contiene %ld caratteri",char_count);
 return 0;
}
 ---------------------------------------------------
DOMANDA:
ho specificato un buffer di 100 elementi per leggere, ho provato
a fargli leggere un file di 120 caratteri e riporta corettamente la
dimensione in bytes.
così facendo sfonda il limite del buffer e dovrebbe darmi un errore di
segmentazione. perchè
invece funziona?
CIAO E GRAZIE  in anticipo.

invece funziona?
Perche' fread *cerca* di leggere il numero di elementi che
tu gli dici di leggere e se non ci riesce ti dice quanti ne
ha letti *realmente*.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 CIAO E GRAZIE  in anticipo.
Questo dimostra una volta di piu' che un accesso scorretto in memoria
NON implica AUTOMATICAMENTE il crash del programma.
Tutto dipende da quali variabili si vanno a corrompere (se se ne
corrompono) e come vengono usate queste variabili dopo la corruzione.
Prova a definire le variabili in questo modo
  char buff[100];   /*QUI NON MI TORNA*/
  FILE *fp;
  int n;
  int char_count=0;
e a sostituire il ciclo con
  do{
      n = fread(buff,1,120,fp);
      char_count += n;
    }while(n!=0);
Sul mio sistema crasha, sul tuo prova :-)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 NON implica AUTOMATICAMENTE il crash del programma.
Non e' questo il punto.
Il nostro amico compie delle letture dal file a blocchi di 100
(teoricamente), in via del tutto corretta.  
In realta', la fread, alla seconda lettura si ferma prima, 
incontrandone solo 20.  La lettura corretta dei byte (non vedo 
perche' il programma, secondo Johnny, dovrebbe crashare) si ha 
perche' si conta il numero effettivo di caratteri letti, che 
nel primo caso e' 100 e nel secondo 20.


 nel primo caso e' 100 e nel secondo 20.
Io avevo capito che il ciclo era stato modificato facendo
leggere 120 caratteri e ficcandoli in un array che al massimo
ne contiene cento, e con queste ipotesi si chiedeva come mai il
programma non crashasse.
Rileggendolo mi sono accorto che faceva leggere un file di 120
caratteri. Sorry per il refuso.
C:\>iao Angelo

Newsgroup: it.comp.lang.c
Titolo: C x WIN

Mi consigliereste un buon programma per programmare in C su e per windows?
Grassie mille
                                                                        red


red
Il tutto dipende dalle tue finanze!
Gratis :
LCC
Dev-Cpp (
www.bloodshed.net
)
Borland C++ free compiler
djgpp
mingw
A pagamento :
Visual Studio
Borland C++ Builder
CodeWarrior
Personalmente ti consiglierei Dev-Cpp o Lcc che sono acnhe editor oltre che
compilatori, se invece sei in grana nettamente Visual Studio che come IDE
non ha eguali (giudizio personale)
Ciao
Wezzy

 ha scritto nel messaggio
news:PlmS9.13578$lj5.1...@tornado.fastwebnet.it...


Newsgroup: it.comp.lang.c
Titolo: problema con un programma

dunque, questo programma dovrebbe leggere 8 numeri reali e sommare quelli
che hanno la parte intera reale.
#include<stdio.h>
#define dim 8
void f(float v[]){
int i;
float e=0;
for(i=0; i<dim; i++){
if(((int)v[i])==((int)v[dim]))
e = e + v[i];
}
printf("La somma è %f", e);
}
main ()
{
float V[dim];
int i=0;
for (i=0; i<dim; i++)
{
printf("Inserire un valore: ");
scanf("%f", &V[i]);
}
f(V);
return 0;
}
non riesco a capire perchè la somma (anche se non metto l'operatore di
casting) è sempre 0.0000000
grazie :)

 e = e + v[i];
BEH SE compari l'elemento V[dim] è normale che non funziona...esce fuori dai
limiti!!!
V[dim - 1]
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Newsgroup: it.comp.lang.c
Titolo: (OT) Esiste un NG ASM?

Salve a tutti , come da oggetto : esiste un Newsgroup di assembler??
se si , com'čil nome it.comp.lang.asm??
Grazie 1000
Ciao :-) Roberto
rispondete  in e-mail se vi vą

 se si , com'čil nome it.comp.lang.asm??
No, non esiste... ma tempo fa interessava anche a me.
Puoi provare a chiedere sul generico it.comp.programmare ma č difficile
riuscire a trovare qualcuno che ti aiuti sull'argomento, oppure provi su
qualche NG straniero.
--
________________________________
per rispondermi iliasba(at)
tin.it
bye Brain

se si , com'čil nome it.comp.lang.asm??
comp.lang.asm.x86
Se vuoi scrivere in italiano, utilizza il generico it.comp.programmare
Saluti,
    Mardy

 Salve a tutti , come da oggetto : esiste un Newsgroup di assembler??
Si free.it.programmazione.assembly: č nuovo ma si sta gią popolando!
Ciao
Steve

Ma su che server? E con che nome, di preciso, dato che non lo trovo?
--
Marco Iannaccone
marc...@tin.it
Nick: Tolkien
ICQ UIN: 18748121
"This is a new ship, boy, but she's got the right name...
You treat her like a lady, and she'll always bring you home"
"Questa è una nave moderna, ma ha un nome antico e glorioso...
Trattala come una signora e ti riporterà sempre a casa"
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm
FAQ di it.comp.lang.c++:
http://www.programmazione.it/linguaggi/c/lang_faq.htm

 Ma su che server? E con che nome, di preciso, dato che non lo trovo?
Il server è news.libero.it....
Il nome è quello che ti ho detto: free.it.programmazione.assembly....
Ciao
Steve
Newsgroup: it.comp.lang.c
Titolo: Creare un daemon

Dove posso trovare informazioni o guide su come creare dei daemon utilizzando
c/c++? (meglio c++)
Non credo che un loop a infinito su event cacher sia una soluzione felice per
la cpu...
thx
-- 
| /
| \Byte - Andrea Briganti - 
kbyt...@freemail.it
http://www.kbytesystem.fasturl.it
ICQ: 40872731


I'm not prejudiced, I hate everyone equally.

Newsgroup: it.comp.lang.c
Titolo: 3 domande da straprincipiante

1) Il borland 5.5 che ho appena scaricato e' un ansi c ?
2) In universita' ce' il turbo c 2.0 sempre della borland, prima
srivo il programma poi lo compilo e poi mi viene fuori un .exe.
Con il 5.5 dove e con cosa scrivo il programma (forse edit?)?
e per far venir fuori un eseguibile?
3)Cosa dice di fare il file readme che ti danno con il 5.5 a riguardo dei
file .cfg?
Grazie Andrea

e per far venir fuori un eseguibile?
Lo compili e lo "linki".
--
Andrea Laforgia (UIN 87230455)
----------------------------------------------------------
Non scrivetemi per e-mail, se non richiesto espressamente.
No replies in private e-mail, unless explicitly requested.
----------------------------------------------------------

1) Il borland 5.5 che ho appena scaricato e' un ansi c ?
Allora l'ambiente del  broland C++ 5.5 ti permette naturalmente dis
crivere anche programmi in C, per sapere se le funzioni che usi via
via sono ANSI, per windows, per unix e basta o per il supercomputer di
star-trek ti basta andare a cercare il nome della funzione che vuoi
usare nell'help e cliccare poi su "portability" le cellette spuntate
sono quelle di compatibilita'.
Per sfornare un programma composto da un solo file (altrimenti devi
fare new->project naturalmente) ti basta fare dal menu file new->text
edit poi lo compili  dal menu project... ops..aspetta un attimo tu ti
stai riferendo al b c++ 5.5 sotto windows vero ? Perche' se hai solo
il compilatore da riga di comando allora le cose cambiano...
Augusto Pucci ( 
http://www.prospektiva.it/webmaster/
 )
Webmaster di Prospektiva On-line
http://www.prospektiva.it
Webmaster di 
CO.DI.CI
. Siena
http://codici.supereva.it

Ho quello di linea.. ma ora inizio a capirci qualcosa.(forse)
Grazie Andrea
Newsgroup: it.comp.lang.c
Titolo: Array multidimensionale

Ragà aiutatemi! Ho questo codice:
char *di(corde dim[][2])
{
  int i=0, j=0;
  for(i=2; i<9; i++){
    for(j=0; j<2; j++){
      switch(dim[i][j]){
        case REbb: return("REbb");
                   break;
        default: return("ERRORE");
      }
    }
  }
}
la funzione chiamante nel main come deve essere scritta? Ho rpovato:
di(&dim[0][0]), di(dim[][2]), di(dim[0][0]) ma non funziona!

 ha scritto nel messaggio
news:9t2qgf$fe4$1...@lacerta.tiscalinet.it...

Il parametro che passi alla funzione è un array costituito da un numero
indefinito di array di due elementi, quindi puoi passare un qualunque
oggetto di tipo:
corde dim[N][2];
dove N può essere qualunque. Attento però, perchè nella funzione tu accedi
tramite il primo for a 10 elementi; se N > 10 non hai problemi, ma sprechi
elementi; se N<10 avrai sicuramente problemi (o forse no, ma è un undefined
behaviour).
Ciao,
Cecco

 behaviour).
Scusa, non ho poi risposto alla tua domanda: per richiamare la funzione
basta passare il nome dell'array:
corde dim1[5][2], dim2[40][2];
di(dim1); //non darà problemi;
di(dim2); //darà problemi;
Ciao,
Cecco

 di(dim2); //darà problemi;
il contrario.
hai detto giusto nel post precedente.
ciao
donCiccio

 ha scritto nel messaggio
news:9t3ngb$mb9$1...@nreada.inwind.it...

Ops, sorry ;-)
Ciao,
Cecco

 ha scritto nel messaggio
news:UP6J7.16306$0x4.3...@news2.tin.it...


 casella dell'array, ma non dovrebbe funzionare anche con di(&dim[0][0])?
No,  in questo modo passeresti un puntatore ad un int.
La cosa è un pò più complessa: quando dichiari la funzione, il compilatore
interpreta il tipo "int dim[][2]" come "int (*)[2]", cioè un puntatore ad un
array di 2 elementi. Se ad esempio avessimo:
int dim[3][2];
questo è un array di 3 array di 2 elementi; dim[i], con i che va da 0 a 2, è
l'i-esimo degli array di due elementi, quindi dim[0] è il primo array, e
&dim[0] è un puntatore ad esso. Quindi, in conclusione, puoi richiamare la
funzione con:
di(&dim[0]);
Nota che "dim" equivale proprio a "&dim[0]", ma con questa seconda notazione
la funzione può essere richiamata qualunque sia il valore compreso tra le
quadre, anche >2; in tal caso il comportamento sarà un undefined behaviour.
Spero non averti confuso le idee.
Ciao,
Cecco

 interpreta il tipo "int dim[][2]" come "int (*)[2]", cioè un puntatore ad
un
Forse è meglio dire che int dim[][2]  _decade_  ad un puntatore ad un array
di due elementi.
Ciao,
Cecco

Nota che "dim" equivale proprio a "&dim[0]"
Occhio a distinguere casi e casi ;)
In questo caso e' cosi'.
-- 
The Follet
Newsgroup: it.comp.lang.c
Titolo: aiuto per djgpp

ciao a tutti,
volevo chiedervi un aiuto per installare il compilatore djgpp!
(ci ho provato ma senza risultati!)  :-)
grazie!

emilio ha scritto:

ciao
se non sbaglio, da questo indirizzo
http://www.delorie.com/djgpp/zip-picker.html
compilando il form,
ottieni non solo l'elenco dei file da scaricare, ma anche le istruzioni
per installarlo correttamente.
per esempio, io uso windows 2000 e ho ottenuto queste istruzioni:
elenco file da scaricare:
unzip32.exe          to unzip the zip files         95 kb
v2/
copying.dj
        DJGPP Copyright info            3 kb
v2/djdev203.zip      DJGPP Basic Development Kit   1.5 mb
v2/faq230b.zip       Frequently Asked Questions    664 kb
v2/readme.1st        Installation instructions      22 kb
v2apps/rhid149b.zip  RHIDE                         2.4 mb
v2gnu/bnu214b.zip    Basic assembler, linker       3.1 mb
v2gnu/gcc332b.zip    Basic GCC compiler            2.8 mb
v2gnu/gdb53b.zip     GNU debugger                  1.5 mb
v2gnu/gpp332b.zip    C++ compiler                  2.8 mb
v2gnu/mak3791b.zip   Make (processes makefiles)    267 kb
v2gnu/txi46b.zip     Info file viewer              761 kb
istruzioni per installare:
C:\> mkdir djgpp
C:\> cd djgpp
C:\DJGPP> unzip32 d:\tmp\djdev203.zip
C:\DJGPP> unzip32 d:\tmp\faq230b.zip
C:\DJGPP> unzip32 d:\tmp\rhid149b.zip
C:\DJGPP> unzip32 d:\tmp\bnu214b.zip
C:\DJGPP> unzip32 d:\tmp\gcc332b.zip
C:\DJGPP> unzip32 d:\tmp\gdb53b.zip
C:\DJGPP> unzip32 d:\tmp\gpp332b.zip
C:\DJGPP> unzip32 d:\tmp\mak3791b.zip
C:\DJGPP> unzip32 d:\tmp\txi46b.zip
importante:
ovviamente questi comandi non funzionano,
prima devi copiare il file unzip32.exe in C:\DJGPP
poi modifichi i comandi a seconda di dove sono
i file che hai scaricato, per esempio:
C:\djgpp> unzip32 c:\posizione\esatta\di\djdev203.zip
C:\djgpp> unzip32 c:\posizione\esatta\di\faq230b.zip
...
eccetera
ciao
spero di esserti stato utile
davide

Newsgroup: it.comp.lang.c
Titolo: Leggere file di testo riga per riga in C

Salve!
Sto facendo un programma in cui mi serve leggere un file di testo,
nella mia stessa home, riga per riga, come posso implementarlo?
Ogni riga č formata cosě:
numero   comando   parametri
in cui numero č il tempo, comando č il comando che il programma deve
eseguire e parametri sono i parametri del comando.
Adesso, come si fa a fare leggere riga per riga e selezionare il primo
argomento come numero, il secondo come comando e il terzo come
parametro?
grazie a tutti!

Dado wrote:

prova con fgets()
Newsgroup: it.comp.lang.c
Titolo: DEcompilatore C....esiste?

capisco che non si potrŕ tornare alla forma originale del codice, perň
,forse, qualcosa si potrebbe capire.
Qualcuno di voi sa darmi qualche dritta
Grazie e ciao!
Claudio
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
no. da quello che so io qualcuno c'ha provato a farlo, ma sono stati
insuccessi per la maggior parte: quando un sorgente viene assemblato in
binario tutte le variabili perdono il loro nome, quindi questi presunti
decompilatori tiravano fuori sorgenti quasi intraducibili: senza
commenti, con nomi di variabili tutti uguali e numerati.. e cmq spesso non
funzionavano nemmeno.. di certo non ne trovi a scaricare

 funzionavano nemmeno.. di certo non ne trovi a scaricare
OK, grazie mille! Ciao!!


Qualcuno di voi sa darmi qualche dritta
dipende da cosa ti serve, tieni conto che per linux ad esempio i
programmi te li danno con il codice sorgente quindi se quello che ti
serve sono programmi generici fai molta meno fatica così (e ci sono i
commenti nel codice!! ^_^)

Newsgroup: it.comp.lang.c
Titolo: Registro di Win9x...

Cercavo qualche funzioncina bella che pronta per "muovermi" nel
registry di Win! Se qualcuno potrebbe essere cosě gentile...
Grazie a Tutti! Bye bye.
;-)
               --Please also reply via E-Mail--
                      4169522043485253

you wrote :
#Cercavo qualche funzioncina bella che pronta per "muovermi" nel
#registry di Win! Se qualcuno potrebbe essere cosě gentile...
#Grazie a Tutti! Bye bye.
Per cortesia, sei OFF-TOPIC !!!
........................................................
. Andrea Laforgia        (
andrea_...@bigfoot.com
) .
........................................................
Newsgroup: it.comp.lang.c
Titolo: atoi

salve NG!
chi mi sa dire in che libreria č contenuta la funzione atoi e come si usa
con precisione.
grazie

 ha scritto nel messaggio
news:8fupia$b8o$1...@lacerta.tiscalinet.it...


 si usa con precisione.
  RTFM!
	Alla prossima,
		Marco

  RTFM!
Che vuol dire RTFM ?
Augusto Pucci
Webmaster di Prospektiva On-line
http://www.prospektiva.it

 Che vuol dire RTFM ?
  Read The Fucking Manual. :)
	Alla prossima,
		Marco

  Read The Fucking Manual. :)
Allora in questo caso poteva essere UTFHOL
"Use The Fucking Helkp On Line :-)


Newsgroup: it.comp.lang.c
Titolo: risoluzione problema con if

salve a tutti,
dovrei scrivere un programma che trovi il minore e il maggiore  (e
visualizzi il numero) tra tre o piu' interi ricevuti in input usando la
formula a selezione singola dell'istruzione if. E' possibile o devo inserire
delle istruzioni in catena di if? In tal caso ha sbagliato il libro a
proporlo prima visto che l'ho preso da Deitel & Deitel :)
Fino ad ora ho fatto numerosi tentativi ma sento che sfugge qualcosa, perchè
cmq il programma dovrebbe essere piu' che banale
Spero possiate aiutarmi o indicarmi la strada almeno
Vi ringrazio anticipatamente
Giuseppe

 wrote in message
NSd28.15944$tl3.4...@twister2.libero.it...


Giuseppe
Shinji-kun

Non č meglio cosě:
if (a > b) {
    if (a > c)
         printf("Il massimo dei tre interi č %d", a);
    }
else
if (b > c)
     printf("Il massimo dei tre interi č %d", b);
else
     printf("Il massimo dei tre interi č %d", c);
E risparmi una variabile.
Ciao
--
Luigi
--
Web Site: 
http://web.tiscali.it/luigi_web
E-mail: 
byte...@hotmail.com
ICQ #46240443

Luigi
Shinji-kun

 memoria in più :)
Non è previsto utilizzare un ciclo for nel programma? Perchè in quel caso
diventa una bazzecola...
Fabio Alemagna

Giuseppe
Shinji-kun

 solo if singoli seguiti subito da un printf;
Di if ne useresti solo due, se usassi un ciclo for, cmq, la soluzione è 
molto semplice:
int a, b, c [, ...];
int min = a, max = a;
[ prendi l'input... ]
if (b < min) min = b;
if (c < min) min = c;
[...]
if (b > max) max = b;
if (c > max) max = c;
[...]
[ stampa il risultato ]
Fabio Alemagna
 

 [ prendi l'input... ]
Ovviamente quello di sopra va riscritto cosě:
int a, b, c [, ...];
int min, max;
[ prendi l'input... ]
min = a; max = a;
Fabio Alemagna

ringrazio tutti per le Vs risposte, ho risolto mettendo max=a  min=a
solo un'altra domanda se non sono pesante...
return 0; indica che il programma è terminato con successo, ma in che
senso?cosa fa realmente?è un'istruzione necessaria?
grazie
Giuseppe

senso?cosa fa realmente?è un'istruzione necessaria?
Dici al programma chiamante che e' terminato tutto bene e che puo'
procedere oltre... senza doverti ideare tu un modo per controllare la
corretta terminazione di un programma.
E' necessaria perche' lo standard vuole cosi' (a parte l'indubbia
utilita').
I dettagli del funzionamento non riguardano il C standard, ma i
singoli sistemi operativi. Detto a granti linee funziona esattamente
come il valore di ritorno di una qualsiasi funzione, solo che qui puo'
essere solo un intero.
Mox
Newsgroup: it.comp.lang.c
Titolo: IPC & Win

Ho bisogno di qualcosa che mi permetta di condividere memoria tra due
processi (avro' bisogno anche di semafori).
quali funzioni posso usare in MSVC++ e quali in Cygwin.
Grazie

 wrote:
Premesso che quello che sto dicendo riguarda il C e che non ho la piu'
pallida idea di cosa possa fare al di fuori di un sistema windows...
questo e' un problema davvero interessante, se ho ben capito, si
tratta di far condividere memoria a due processi e di
sincronizzarli...
Se cosi' e' e se i processi sono single-thread cosa che semplifica
notevolmente il problema per la condivisione puoi usare
CreateFileMapping () che genera un pezzo di memoria condivisibile
tramite  per esempio un handle e di seguito la OpenFileMapping per
accedervi, inoltre si deve chiamare la MapViewOfFile che mi ha fatto
piangere sangue amaro... per questa ti posto direttamente la
descrizione di Microsoft:
"The MapViewOfFile function maps a view of a file into the address
space of the calling process. "
Detto cosi' sembrerebbe facile ma ti assicuro per esperienza che se
non l'hai mai fatto e se non hai codice di esempio (da copiare !!!) e'
davvero un casino.
per la sincronia ci sono (singe-thread) le CriticalSection, con le
funzioni associate di Initialize, Open e Leave che funzionano da Dio.
Se hai problemi scrivimi pure, se non ne hai mandami una tua foto che
la voglio mettere sul comodino !!!
ciao.


Newsgroup: it.comp.lang.c
Titolo: HELP ! Vecchia versione di C

Purtroppo le mie conoscenze sul linguaggio C e sulla sua storia sono
praticamente nulle, quello che servirebbe ad un  mio amico e' una copia
dello C che non sia il ++  bensi' qualcosa che possa girare su un 286 e
quindi presumo che si tratti di una versione rilasciata qualche anno fa.
Spero di essere stato chiaro anche se ho dei dubbi.
Grazie per l'aiuto.
Erminio
e-mail: 
erm...@vipnet.it

quindi presumo che si tratti di una versione rilasciata qualche anno fa.
Non so se abbia delle limitazioni a proposito, ma puoi usare il djgpp
che trovi a 
www.delorie.com/djgpp/
--
Andrea Laforgia
andrea_...@bigfoot.com

Newsgroup: it.comp.lang.c
Titolo: Stampare su un determinato punto dello schermo

Sto scrivendo un programma di chat molto blando.
Vorrei che le scritte comparissero a partire dalla parte alta dello schermo.
C'è qualche funzione che permette cose simili?
meglio ANSI, ovviamente, ma qualunque aiuto mi sarà di certo utile.
Grazie,
Riccardo

Riccardo Galli wrote:

Lo standard ISO non prevede un controllo del terminale di questo tipo. 
Fuori standard, ma molto comuni e portate su quasi tutte le piattaforme 
esistenti, ci sono le (N)Curses: Google e` il tuo regno.
-- 
Baci,
Mony
Newsgroup: it.comp.lang.c
Titolo: input e asterischi

Ciao,
come si può fare in modo che quando l'utente digita un tasto sullo schermo
compaia un asterisco al posto del carattere (tipo password)? E' possibile
filtrare i caratteri prima che questi vengano stampati?
Grazie
Bizio



Non esistono, che io sappia, soluzioni standard per leggere un
carattere prima della pressione del tasto invio (cioe', per lo
standard l'input e' bufferizzato su ogni riga).
Su dos/windows:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define MAXLEN 40
int main(void){
    char pass[MAXLEN];
    printf("inserisci codice: ");
    int i = 0;
    while((pass[i++] = getch()) != '\r' && i < MAXLEN-1)
        putchar('*');
    pass[i] = '\0';
    printf("\n%s\n",pass);
    system("pause");
    return 0;
}
Ciao,
Zeppe

 standard l'input e' bufferizzato su ogni riga).
Si puo` provare a disabilitare la bufferizzazione:
setvbuf(stdin, NULL, _IONBF, 0);
Tuttavia questo controlla solo la bufferizzazione che viene fatta a
livello di libreria C e non quello che l'OS fa a livello piu` basso.
Tipicamente su sistemi unix bisogna settare il terminale in modalita`
non canonica (man 3 termios), ma qui` e` OT.
Luca
-- 
Home: 
http://kronoz.cjb.net
Windows NT: Designed for the Internet. The Internet: Designed for Unix.