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

Ciao a tutti , avrei la neccessità di realizzare dei semplici disegni 
geometrici e grafici, che librerie mi consigliate di usare?
grazie

 grazie
grx o dislin per djgpp...graphics per turbo C

Scusate mi sono dimenticato di dire che il sistema opertivo è Linux

 Scusate mi sono dimenticato di dire che il sistema opertivo è Linux
credo che dislin esista anche per linux...dai una controllata con google

Newsgroup: it.comp.lang.c
Titolo: HELP ME!!!!

Con che manuali posso iniziare da zero zero zero zero?
(manuali cartacei e online)
GRAZIE!!!

 writes:

Brian W. Kernighan e Dennis M. Ritchie - The C programming language
(2nd ed.) - Addison-Wesley
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

"Il linguaggio C" Mcgrawhill autore Bellini e Guidi
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva
Newsgroup: it.comp.lang.c
Titolo: Massima dimensione per un vettore (dev-cpp) in C

Salve a tutti, premetto che spero di non essere OT, in tal caso vi prego 
di scusarmi.
Sto facendo un'analisi di sorters e avrei bisogno di ordinare dei 
vettori da 1 milione di interi unsigned a 32 bit (long) poi  2 milioni e 
così via fino ad arrivare a 2 miliardi ( :) ). Già a 1 milione si 
rifiuta di allocare. Utilizzo il seguente codice C sotto dev-cpp (win XP):
...
int *a;
int lungz=1000000000UL;
     a = (int*) malloc ( lungz * sizeof(int) );
     if(a==NULL){
                 puts("Errore nell'allocazione del vettore");
                 exit(0);
     }
....
ottenendo errore nell'allocazione del vettore. Come mai? Cosa potrei 
fare per riuscire ad allocare tale vettore? Non posso sfruttare più 
vettori perchè temo mi falserebbero le performance (devo calcolare i 
tempi di esecuzione) che risulterebbero differenti rispetto 
all'ordinamento lavorando su di un unico vettore. Forse già con i 
risultati ottenuti fino a mezzo milione di interi posso già ottenere un 
grafico discreto ma vorrei salire almeno a 10milioni per studiare il 
comportamento asintotico.
     grazie anticipatamente, rz
-- 
                                 /TIDIRYUM - Ferrara - ITALY\
                                 \ICQ#    13901251   !!bye!!/
Più Campione che mai di °j-league Jikkyo Winning Eleven 2000°
(dal 07/00 a tutt'oggi)

 rifiuta di allocare. Utilizzo il seguente codice C sotto dev-cpp (win XP):
Non so cosa dire, io con VC++2003 e winXP arrivo tranquillamente fino a:
p = malloc(100000000*sizeof(int));
ovvero 100 milioni di interi tranquillamente... gia' a 500 milioni di interi
pero' mi viene il simbolo che la mia memoria virtuale sta esaurendo e mi da
problemi l'applicazione!
Tieni conto anche che arrivare a 2 miliiardi di interi e' problematico....
2 miliardi * 4 bytes ogni intero -> 8,000,000,000 che occupano 8GB di
memoria e putroppo grazie ai processori a 32bits in teoria potrebbe solo
arrivare a 4GB (anche se il P4 permette di arrivare in teoria a 64GB).
Io ad esempio ho 512MB e anche usando la mia memoria virtuale non
basterebbe....
Tommy

 int lungz=1000000000UL;
La costante è unsigned long (corretto), ma non *lungz* : okkio ai limiti del 
tipo int.
Prova a stampare il valore di *lungz* così come la hai inizializzata.
-- 
asettico (aka Roberto) [
http://www.rossomaltese.it/
]
GPG fingerprint [ BA20 8C8D 7712 9D9A 57F3  A96A A7BE 905C 1CB9 26BA ]
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/IT/O d++(-) s:+>: a34 C++$ ULAVH*++$>++++ 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++ y+++*
------END GEEK CODE BLOCK------

 int lungz=1000000000UL;
č un miliardo, non un milione: 3,7 gigabytes.. forse semplicemente non ne
hai a disposizione ?
Ciao 

 Salve a tutti, premetto che spero di non essere OT, in tal caso vi prego
 >[..]
 >
Grazie a tutti per le risposte. Ho risolto...
		ciao, rz
-- 
                                   /TIDIRYUM - Ferrara - ITALY\
                                   \ICQ#    13901251   !!bye!!/
° °  associato #2 alla LAVPS2 ° °
Matrix - Messiah - Lisa INSTALLER
Newsgroup: it.comp.lang.c
Titolo: system ( "cls" )

Esiste qualcosa di + efficiente in ambiente dos-win per effettuare la
cancellazione dello schermo?
Thanks! ;-)
               --Please also reply via E-Mail--
                      4169522043485253

Thanks! ;-)
In una finestra Dos, utilizzando il DJGPP o il Borland C++ (forse
anche altri compilatori, ma poiché la libreria non č standard, non
posso garantire il risultato) puoi usare la funzione CLRSCR(),
contenuta nella libreria CONIO.H.
Credo che una possibilitą simile sia offerto anche dalle curses.h.
Sono state scritte originariamente per Unix, ma dovrebbero essere
state portate anche per Dos. Se qualcuno ne sa qualcosa please mandi
un msg.
Paolo

 cancellazione dello schermo?
Se hai un compilatore Borland o il DJGPP puoi usare clrscr(), contenuta
nella libreria conio.h
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------

cancellazione dello schermo?
Dipende dal particolare compilatore che utilizzi...
Alcuni compilatori DOS (DJGPP/TC) hanno una libreria (conio.h) in cui
è inclusa la routine clrscr()
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

 
ciao a tutti:)
sono nuovo del ng e quindi CIAO! :)
per cancellare lo schermo ho utilizzato printf con una sequenza
di escape, e quindi ho definito la funzione clear()
non so come sia conio.h.. ma questa funziona :)
allo stesso modo (\033[1;33 ad es.) si definiscono i colori nella
console
ciao:)
begin clear.c
<CODE>
#include <stdio.h>
#define CLEAR "\033[0;0H\033[J"
void clear(){
printf("%s",CLEAR);
}
main(){
clear()
}
</CODE>
-- 
_today is Saturday 30 October_
      -= v3j3ta 99 | is the administrator @ 
penguinpowered.com
 =-
Powered by BadPenguin GNU/Linux -- 
www.badpenguin.org
 -- pgpkey
available
88 fingers louie : the choice of a _punk_ generation (vejsign 0.2b)

console
Questa soluzione vale SOLO nei casi in cui sia installato ANSI.SYS.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

Newsgroup: it.comp.lang.c
Titolo: perchè non salva?

Ho provat a scrivere questo programma per testare le operazioni I/O da
file....ma mi crea il file ma non lo salva...why!?
==================
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char ch;
if (argc!=2)
  {
   printf("Immettere il nome del file.\n");
   exit(1);
  }
if ((fp=fopen(argv[1], "w"))==NULL)
  {
   printf("Impossibile aprire il file.\n");
   exit(1);
  }
do
  {
   ch=getchar();
   putch(ch,fp);
  }
while (ch!='$');
return 0;
}
===============
thx
byez
B@STI

 }
Ciao Maurizio

 Ho aggiunto la riga nel listato
già...me ne ero dimenticato.... :P
grazie
byez
B@STI

ma è possibile che non funga ugualmente!?
boh!
thx
byez
B@STI

> >    putch(ch,fp);
ho trovato l'errore...c'è un h di troppo :P
sorry
byez
B@STI

 NULL in caso di fallimento
EOF, non NULL
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
No matter what you choose, you're still a luser.
Newsgroup: it.comp.lang.c
Titolo: Struttura

Salve a tutti.
Mi sto dibattendo su di un problema,
Come si fa a creare una funzione e passargli una struttura?
Grazie Amedeo


Con un puntatore non va?

 ha scritto nel messaggio
news:%11ab.323730$Ny5.10...@twister2.libero.it...


 Come si fa a creare una funzione e passargli una struttura?
struct pippo {
     int paperino;
     double pluto;
};
void funzione(struct pippo p)
{
    /* bla bla bla */
}
int main(void)
{
     struct pippo x = {1, 3.5};
     funzione(x);
     return 0;
}
-- 
Enrico 'Trippo' Porreca
Newsgroup: it.comp.lang.c
Titolo: generare eseguibile di un codice sorgente C

Vorrei sapere come faccio a generare un eseguibile di un programma C in
Linux.
Dopo aver eseguito il comando cc [nome prg.c] per eseguire il prg compilato
sono "costretto" a lanciare ./a.out .
Non c'è un modo alternativo ??
PS: che estensione hanno gli eseguibili in Linux ??
Grazie 1000 !!!
aLe
-- 
E ricorda : siamo tutti istanze di Object .

PS: che estensione hanno gli eseguibili in Linux ??
   Nessuna, alcuni flag nella voce di directory corrispondente ne
indicano l'eseguibilita` per varie categorie di utenti. In genere
trovi buone spiegazioni in 'man 2 stat' o 'man 2 chmod'.
-- 
S.L.

 PS: che estensione hanno gli eseguibili in Linux ??
Nessuna o quella che ti pare... un file e' eseguibile se ha il bit di
"execute" settato (chmod +x file, per impostarlo per utente, gruppo e
other).
Ovviamente si presuppone che il file in questione sia un binario eseguibile
in formato Elf (o il piu' vecchio a.out) oppure uno script che contenta al
suo interno le istruzioni per l'interprete da utilizzare (nella prima
linea).
-- 
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."

 linea).
il bang path :-p
#! /bin/<applicazione>
ciao

 ha scritto nel messaggio
news:o5Cgb.18892$e6.6...@twister2.libero.it...


 drwxr-xr-x    2 root     root         4096 2003-09-03 18:58 bin
Spero ti sia chiara questa riga... in ogni caso la directory (d) appartiene
all'utente root del gruppo root e solo l'utente (non il gruppo) ha permesso
di scrivere (w), mentre tutti possono leggere (r) ed eseguire (x), che per
una cartella significa "attraversare".


 Se vuoi basta aggiungere nel PATH la directory corrente ('.').
Aggiungerei, con i relativi problemi di protezione. Se faccio un programma
(o virus...), lo chiamo ls e lo metto in una delle tue directory che
succede quando vuoi semplicemente vedere il contenuto di quella directory?
Esegui il mio programma... a tuo rischio e pericolo :)
Ciao
Matteo
-- 
chi sono e soprattutto chi non sono:
http://web.tiscali.it/sifoneteagnalla/
un piccolo programma per studenti universitari:
http://www.ifthenelse.it/leonetti/imsv/

 Esegui il mio programma... a tuo rischio e pericolo :)
basta aggiungerlo in fondo alla variabile path. Questo non ti da la
sicurezza che il programma ls locale non venga richiamato prima di
quello della directory /bin, ma neanche non metterlo ti da questa
sicurezza (AFAIK).
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

lanciarlo digitando solo il nome del file ???
Caro George Orwell, non puoi.

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

Come fai a conoscermi ?!? ;-)
Sei uno dei miei scrittori preferiti ;-)

 ha scritto nel messaggio
news:se3bov4eshopnrkgc...@4ax.com...

Newsgroup: it.comp.lang.c
Titolo: valori predefiniti dei campi di un struttura

Supponiamo che io definisca un nuovo tipo di dato, tipo
typedef struct {
	int i;
} Prova;
Come faccio ad impostare un valore predefinito per i vari campi della
struttura, in modo che abbiano dei valori di default senza dover scrivere
una funzione che inizializzi la struttura. Vorrei evitare di farla, anche
perché tutte le strutture dati non sono allocate con malloc, ma sono
dichiarate direttamente nelle funzioni.
se io faccio
typedef struct {
	int i = 1;
} Prova;
e poi in una funzione dichiaro
Prova prova;
sono sicuro che prova.i==1 ?


Non funziona...non puoi creare una struttura con i membri inizializzati.
Però potresti creare la variabile struttura globale o all'interno delle
funzioni come statica...in questo modo il compilatore resetta i valori a 0
per tutti i membri.
--------------------------------
Inviato via 
http://usenet.libero.it

 > } Prova;
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Non credo proprio!
Ciao,
Ema

Allora scherzavo...dai...č la sonnolenza che porta a questi scherzi...

Newsgroup: it.comp.lang.c
Titolo: strtol e errno

Ciao a tutti,
in quali casi, oltre all'overflow e all'underflow, strtol setta la
variabile errno? Secondo me in questo caso dovrebbe farlo, quindi
penso sia il compilatore (lcc) a sbagliare..
val = strtol("AAA", NULL, 10);
if (errno!=0){
	printf("ERRORE %d %d", val, errno);
} else {
	printf("NESSUN ERRORE %d %d", val, errno);
}
ed il risultato è questo:
NESSUN ERRORE 0 0
... ma sicuramente sarò io a sbagliare :)
Ora provo anche su gcc, che mi fido di più!
grazie
g4b0

 Ora provo anche su gcc, che mi fido di piů!
Lo standard menziona solo i casi di under/over-flow.
Ciao.


Con strtol() errno è signoficarivo solo in caso di over/underflow.  In 
questi casi il valore ritornato deve essere LONG_MAX/LONG_MIN.
-----
val = strtol("AAA", NULL, 10);
if ((val == LONG_MAX || val == LONG_MIN) && errno == ERANGE) {
	/*  Overflow oppure underflow */
}
-----
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

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

Ciao a tutti!
Sapete se in rete esiste qualche sito che contenga programmini o
esercizi in c già svolti;
Ho appena iniziato a programmare e avrei bisogno di fare più esercizi
possibili.
Grazie
Andy

 possibili.
Hai provato questo corso sharware?
http://www2.egr.uh.edu/sysdoc/C/Tutorial/clist.htm
A quanto dice, ci sono oltre un centinaio di programmini d'esercizio da
fare, con tanto di soluzioni.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
Newsgroup: it.comp.lang.c
Titolo: indirizzo del file

ho notato che questa istruzione
FILE *fp=fopen("c:\\prova.txt","r");
printf("%d %d\n",fp);
mi da come output 2009246944, che è un numero molto più lungo di quelli che
ottengo di solito stampando gli indirizzi contenuti nei puntatori a
variabili.
Quindi l'indirizzo contenuto in un puntatore a file è l'indirizzo di file
nell'hard disk?
Più precisamente a cosa punta? (a un cluster?)
e poi ho notato che se sostituisco l'ultima riga con
printf("%d %d\n",++fp);
l'indirizzo aumenta di 32 byte. Cosa significa?
grazie, ciao

 l'indirizzo aumenta di 32 byte. Cosa significa?
Niente assolutamente niente.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 due parametri e poi in realta' ne passi solo uno.
č il residuo di un mio esperimento, in realtą la funzione che ho compilato č
printf("%d\n",fp);
//output: 2009246976
volevo solo sapere se quello č l'indirizzo di un cluster o cosa

 volevo solo sapere se quello č l'indirizzo di un cluster o cosa
Ammesso che sia giusto, quello e' l'indirizzo di una struttura in
memoria di tipo FILE e non ha niente a che vedere con la locazione
fisica del file.
Per quanto possa sembrare strano, la fopen() non ha la piu' pallida
idea di dove sia il file. La reale apertura del file viene fatta dalle
api del S.O.: quello che restituisce la fopen() (come qualsiasi altra
funzione del "C" standard), non ha nessuna attinenza (affermazione da
prendere con una certa elasticita') con l'hw su cui viene eseguita.
HTH


 memoria di tipo FILE
il fatto è che mi sembra un numero un po' troppo grande (ammesso che sia
sempre in byte) per rappresentare un indirizzo nella mia ram che è di 512 mb
(536870912 bytes se non sbaglio)

 (536870912 bytes se non sbaglio)
Memoria virtuale questa sconosciuta... Ogni processo sulla tua macchina
ha a disposizione l'intero spazio di indirizzamento permesso dal
processore (non e' proprio cosi' perche' il S.O. si riserva delle aree
che non sono accessibili ai processi normali).
Pertanto puoi avere indirizzi del genere anche se gli indirizzi fisici
non esistono. A trovare la correlazione indirizzo fisico, indirizzo
virtuale ci pensa la MMU (memory mamagement unit).


 > > //output: 2009246976
Nota che questo numero potrebbe non significare assolutamente nulla. Per
stampare il valore di un puntatore dovresti usare "%p", non %d".
Il formato emesso da "%p" non č specificato dallo standard in quanto dipende
da tante cose, fra cui dall'architettura della memoria della macchina. Su
molti compilatori, "%p" stampa semplicemente un numero esadecimale, ma ho
visto anche formati piů complessi, ad esempio, cose come "1A2B:3C4D", dove i
due numeri separati dal ":" rappresentano il segmento e l'offset.
Quanto al valore di ritorno delle fopen(), č semplicemente un puntatore a un
oggetto di tipo "FILE", il quale č solitamente una typedef di struct
definita in qualche include-file della libreria standard, in genere
<stdio.h>.
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c
Titolo: LIBRI sul C

Ciaooo !!!
ok sara magari kosa ke avranno detto migliaia di volte pero volevo sapere se
mi sapete consigliar un buon libro ke parta da 0 per programmare in C ...
visto ke presto avrei iniziato a scuola ma nn volevo fermarmi a fare le kose
ke mi dikono a scuola =D !!!
CIao e grazie !!!

...


Newsgroup: it.comp.lang.c
Titolo: Acquisizione byte via RS232

Qualcuno ha esempi consultabili? Io conosco il tipo di dato in arrivo e 
la sua codifica per byte, mi interesserebbe poterlo leggere per poi 
stamparlo su file. L'unico mio problema è trovare le funzioni giuste e 
l'eventuale libreria alla quale fare riferimento.
Grazie
Gian Leonardo

 ha scritto:

Dai un'occhiata alle funzioni inport, inportb e outport, outportb.
Ciao, Michele.

 
Grazie del consiglio Michele, ora me le studio e poi vi sottopongo 
problemi vari :-)
Gian Leonardo


Pessima idea: rivolgiti ad un newsgroup dedicato al tuo sistema 
operativo, dato che stai facendo uso di caratteristiche non standard.
-- 
Enrico `Trippo' Porreca

 
Scusa ma non capisco la risposta. Io voglio gestire con l'ansi c questa 
comunicazione. Non vedo quale riferimento al sistema operativo dovrei 
mai fare, oltretutto non uso come piattaforma M$ e di conseguenza non 
sono obbligato ad aggirare eventuali restrizioni nell'uso delle porte.
Ma forse hai ragione tu e ti pregherei quindi di esplicarmi le 
caratteristiche non standard alle quali fai riferimento e che potrebbero 
crearmi problemi.
ciao e grazie
Gian Leonardo

 crearmi problemi.
Le cose non standard sono:
     - RS232
     - inport
     - inportb
     - outport
     - outportb
-- 
Enrico `Trippo' Porreca

 
Hai ragione ;-)
Speravo ci fosse qualcosa di bell'e fatto, invece no :-?
Grazie
Gian Leonardo

     - outportb
Forse intendevi dire OT, RS232 mi pare sia uno standard gia' da un
pezzettino...

 pezzettino...
Si` certo, intendevo non standard dal punto di vista del linguaggio C.
-- 
Enrico `Trippo' Porreca

 Speravo ci fosse qualcosa di bell'e fatto, invece no :-?
Ma le cose bell'e` fatte ci sono, sotto forma di librerie non standard. 
E ti conviene usarle, penso, tanto per non `reinventare la ruota'.
Solo che questo non e` il luogo adatto per discuterne, e percio` ti 
dicevo di chiedere chiarimenti su altri newsgroup :-)
-- 
Enrico `Trippo' Porreca

Su Linux/Unix: serial programming guide for posix operating systems" di
Michael R.Sweet,
scaricabile in PDF dalla rete.
Su piattaforma windows >=98 : apri la Microsoft API reference
e cerca "Serial"

 scaricabile in PDF dalla rete.
TNX
Sapete se esiste qualche cosa di mooolto antico per DOS?
Gian Leonardo

 
Hia ragione, purtroppo non trovo ng in merito al MS_DOS (in italiano)... 
per linux mi sono gią state date alcune dritte.
Gian Leonardo


con il BC3.1 puoi leggere dallo stream "stdaux" con fscanf, fgets, getch,
etc.
ciao
il mira
Newsgroup: it.comp.lang.c
Titolo: Consiglio

Salve.
Ho trovato un vecchio corso sul c, sotto Dos e che si inspira al Turbo C 2.0
/ Borland C 2.0 anch'essi Dos.
Mi chiedevo se mi conviene cominciare a programmare sotto Dos o utilizzare
direttamente i moderni linguaggi visuali Visual C, c# ecc...
Qualcuno sa dove posso trovare il Turbo c o il Quick c?
Grazie.

 - Mr. Watt :

Il turbo C lo trovi sul sito della Borland.
Per il resto lascia stare i corsi vecchi e quello specifici a una piattaforma:
lo standard c'è, usiamolo ^^ 
Ciao !
Nicholas

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

Ho capito giusto?
a) se dichiaro un array di una certa dimensione, la memoria viene allocata
prendendola nella RAM?
b) se poi la dimensione del mio array diventa mostruosamente enorme, il
programma va a swappare sull'HD?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Cosa c'entra con il C? decide il sistema operativo. Potrebbe succedere
di tutto. Tutto quello che il C sa è il valore di ritorno di malloc().
<OT>
Giusto qualche considerazione
- Non tutti i sistemi hanno un HD.
- Non tutti i sistemi con un HD hanno un sistema di memoria virtuale.
- Non tutti gli utenti di sistemi con HD e memoria virtuale attivano
questa funzione.
- Un sistema operativo decente di solito si rifiuta di allocare troppa
memoria per un'applicazione (quantomeno senza dei permessi speciali).
- Se il sistema (con HD e servizio di swapping), al partire della tua
applicazione, già non ha più RAM libera andrà direttamente in
virtuale.
- Non tutti i sistemi prima finiscono la RAM e poi passano al disco.
Potrebbero benissimo bilanciare le allocazioni in entrambe le
locazioni.
</OT>

On 19 Dic, 17:58, 
ca...@yahoo.co.uk
 (memoria) wrote:

NO!

 prendendola nella RAM?
La RAM e' un oggetto fisico, di cui il tuo programma non ha alcuna nozione.
Per fortuna, il sistema operativo crea per te un'illusione (un'astrazione) di una memoria illimitata (rispetto alle tue normali necessita', naturalmente: non e' affatto illimitata in realta' :-) in cui puoi mettere liberamente i tuoi dati. Dove poi quei dati stiano in un certo momento all'interno della macchina fisica dipende da una miriade di fattori alquanto complessi (dipende dal sistema operativo, dal processore... potrebbero stare in qualche registro, in una delle cache, in RAM, su disco, in piu' di questi posti contemporaneamente...).
Pleg

 Pleg
Ciao!

 allochi in un registro o in una cache non s'è mai visto.
Hai ragione, intendevo "durante l'esecuzione del programma".
Pleg
Newsgroup: it.comp.lang.c
Titolo: Informazioni su Djgpp

Vorrei sapere quali sono i file che devo scaricare dalla directory v2gnu
per poter utilizzare il programma
Ringrazio chi mi aiuterà
trun...@libero.it

 per poter utilizzare il programma
Vai al sito 
www.delorie.com
 che spiega tutto.
EMG

Usa lo zip-picker sul sito.
--
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

 
Prova ad usare zip-picker sul sito 
www.delorie.com/djgpp
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

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

Dove vengono definite le funzioni di libreria, visto che negli header files
ci devono essere solo i prototipi e non le implementazioni?

In una directory del compilatore di solito, o almeno cosi' funziona
per il Turbo C della Borland
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva

 ci devono essere solo i prototipi e non le implementazioni?
Nelle file di libreria (.LIB, .A o altro dipendente dal compilatore).
EMG
Newsgroup: it.comp.lang.c
Titolo: c: dove lo trovo?





Salve a tutti, ho appena iniziato da autodidatta a 
studiare il linguaggio C ed ora credo di essere pronto di mettere in pratica le 
mie conoscenze. Ma dove lo trovo il C? Sulla rete è possibile scaricarlo 
gratuitamente? Dove?


Grazie a tutti


th...@libero.it



Prova:
http://www.bloodshed.net/
Ciao
M D

su 
www.delorie.com
 (sezione Djgpp, porting di gcc per Win)
Ciao Roberto
th...@libero.it
 scritto nell'articolo
<000a01c07a68$24e44120$43061e97@it>...

----------
Newsgroup: it.comp.lang.c
Titolo: spiegazioni

Ciao preemetto che sono alle prime armi(primissime) ho comperato un
libro sul C per vedere se riuscivo a capire qualci qualche cosa (per ora
no).
Nel libro ci sono degli esempi da poter provare ed un elenco di cose she
servono per programmare in Cquali un EDITOR un PREPROCESSORE un
COMPILATORE ed un LINKER ma non so quali usare potreste descrivermene
alcuni oppure se esiste un programma che fa tutto questo e se lo posso
scaricare.
Grazie mille



scaricare.
Il C, secondo me, non e' un linguaggio adatto a chi si accosta alla
programmazione per la prima volta.
Sarebbe meglio imparare un linguaggio come il pascal...
Comunque, se sei interessato a questo linguaggio trovi un pacchetto
completo (compilatore+preprocessore+linker) nel DJGPP che e' per DOS e
che puoi scaricare alla pagina 
www.delorie.com/djgpp
.
Il DJGPP, comunque, non e' altro che la versione per MS-DOS del
compilatore sviluppato per Unix dalla Free Software Foundation e noto
come GNU C.
Attenzione perche' il pacchetto prevede piu' programmi che potrebbero
anche non servirti.
La pagina, comunque, offre il servizio ZipPicker, con il quale puoi
selezionare il materiale che ti serve realmente.
In quanto all'editor, sempre se lavori sotto DOS, trovi un completo
ambiente di sviluppo con RHIDE, che puoi scaricare dalla pagina stessa
da cui prelevi il compilatore, che offre sia le funzioni di editor,
che di vero e proprio ambiente di sviluppo interfacciandosi in modo
automatico sia al compilatore che al linker.
In via estrema puoi sempre utilizzare l'editore di testi offerto dal
tuo sistema operativo (ogni s.o. dovrebbe, di regola, averne uno).
Se hai problemi, comunque, fammelo sapere...

 scaricare.
Si, esiste. Scaricati il DJGPP all'indirizzo
http://www.delorie.com/djgpp/
EMG

automatico sia al compilatore che al linker.
Esiste qualcosa di simile che pero' funzioni in ambiente winzozz?
(un po' come "l'editor" a corredo dell' LCC)
-- 
Bai bii,
Gianluca.
"You have A LOT to learn before use the internet, hahaha!!" (TM) Lamermez

Newsgroup: it.comp.lang.c
Titolo: [newbie] Array {bi|multi}dimensionali

Chiedo scusa per la banalita', mi sono dato alla ricerca nei vecchi post, ma
nulla rispondeva del tutto alla mia domanda...
Quanti modi ci sono per definire un array bidimensionale? E soprattutto,
qual e' il piu' conveniente? E' stupido fare un array di struct a questo
scopo?
TIA
-- 
The Bard.
"L'amore e' come la fascia di ozono: ne senti la mancanza solo quando non ce
l'hai piu'."
Ten. Frank Drebin

 
perche' dovresti fare un array di struct ? per farli di piu' di due
dimensioni puoi usare la seguente sintassi:
int A[x][y][z];
ciao,
--Lorenzo

 int A[x][y][z];
Perfetto, grazie mille. In effetti, a guardare bene c'era anche sul mio
libro (Deitel&Deitel, comprato per l'uni, come vi sembra?), ma non sotto
array, sono dovuto andare a cercare le matrici...

Newsgroup: it.comp.lang.c
Titolo: Stampare col C

Salve,
	qualcuno gentilmente mi suggerisce come usare la stampante
da un programma in C con djgpp? E col gcc? (linux & win)?
Grazie,

 da un programma in C con djgpp? E col gcc? (linux & win)?
Usa la fopen() per aprire il file PRN (in DOS).
EMG

> Usa la fopen() per aprire il file PRN (in DOS).
Oppure il prn, che dovrebbe andare anche su unix, no?
--
Alessandro Monti

Newsgroup: it.comp.lang.c
Titolo: problema su fork/close

salve ho un problema alquanto strano.
purtroopo non ho il sorgente preciso sotto mano, ma dovrebbe essere come
segue
mia (int clientFD, char** pStr) {
    char line[1024];
    char* str;
    str = line;
    // DOMANDINA: trovate utile questa cosa tra char[] e char*? Io no, ma è
un pezzo di codice che già avevo!
    ....
    readLine(clientFD, str); // dentro esegue in un ciclo una read(clientFD,
str, 1); // ciclando
    // A PARTE IL SORGENTE DI readLine CHE ORA NON RICORDO, CMQ QUI
   //  IN str HO IL GIUSTO VALORE LETTO DALLA SOCKET
    ....
    *pStr = str;
}
main {
    int sock = ..... // connesso!
    char* nome;
    mia(sock, &nome);
    // IN nome TROVO "GIUSTAMENTE" (se non ho scordato qualcosa nel listato
che sto scrivendo!)
    // IL VALORE IMPOSTATO NELLA FUNZIONE mia()
    close(sock);
    // UDITE UDITE: QUI nome CONTIENE SIMBOLAGGI CASUALI
    // SE COMMENTO LA CLOSE INVECE TUTTO OK....MA
    int f = fork();
    // QUI nome (SIA IN PADRE CHE FIGLIO) CONTIENE ANCORA ALTRI SIMBOLACCI
}
sono disperato, come la spiegate?
Grazie a tutti

 }
con questo pezzo di codice restituisci al chiamante l'indirizzo di
un array che e' allocato sullo stack e che viene distrutto all'uscita
dalla funzione.
Quello che puo' capitare usando successivamente questo indirizzo e'
del tutto casuale. Usa una malloc().
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: Stranezza GCC+Rhide

Salve a tutti
mi e successa una cosa strana , usando
il gcc+rhide su WinME.
Dichiaro un variabile long int z1,z2,z3,z4=0;
La prima variabile e inizializzata in modo corretto
ma le altre quando le faccio stampare , non
contengono lo zero assegnato , ma un numero arbitrario.
Le ho inizializzate singolarmente , e il problema
 e andato a posto.
Cosa ne pensate??
Grazie a tutti

contengono lo zero assegnato , ma un numero arbitrario.
guarda che cosě inizilizzi solo z4.
long z1=0,z2=0,z3=0,z4=0;

 contengono lo zero assegnato , ma un numero arbitrario.
Di strano non c'e' proprio nulla, cosi' inizializzi *solo* la prima. Se vuoi
per forza fare il figacchione, allora puoi fare cosi':
int z1,z2,z3,z4;
z1=z2=z3=z4=0;
l'ultima istruzione e' corretta perche' l'operatore "=" ha e' associativo a
destra; cioe' e' come scrivere:
(z1=(z2=(z3=(z4=0))))
ora, "z4=0" vale 0; assegna 0 a z3; "z3=(z4=0)" vale 0; assegna 0 a z2;
etc....
--
"Siamo come un bambino piccolo che entra in una grande biblioteca,
le cui pareti sono coperte sino al soffitto di libri in molte
lingue diverse... Il bambino non capisce le lingue in cui sono
scritti. Egli nota tuttavia nella disposizione dei libri un piano
ben preciso, un ordine misterioso che non comprende, ma sospetta,
benché confusamente"
(A. Einstein)
Newsgroup: it.comp.lang.c
Titolo: Program Error

Ciao a tutti,
Ho un problema con una applicazione scritta in
Visual C++
L'errore è molto curioso e strano.
L'applicazione funziona senza alcun problema, ma dopo un certo periodo
compare
un pop-up con su scritto Program Error.
Basta fare ok e la finestra va via.
Ma ribadisco, nessun errore, nessun crash, tutto funziona perfettamente.
Per bypassare il problema vorrei catturare la finestra ed evitare
che esca, o cmq cercare di fare un "ok automatico" !!! ...
Come fare ad implementare questa cosa,
e/o cosa cercare ??
e/o a chi rivolgermi/scrivere ??
potreste aiutarmi per favore ??
Grazie mille
Luca
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 che esca, o cmq cercare di fare un "ok automatico" !!! ...
ciao.
Guarda, sinceramente, se esce quel messaggio vuole chiaramente dire che
il tuo programma non funziona correttamente!
Secondo me ti conviene cercare l'errore nel programma piuttosto che far 
finta di niente e togliere il messaggio di errore...
ciao
Giacomo

 ha scritto:

Ciao Giacomo,
grazie per la cortese risposta.
In realtà il problema è molto particolare, cerco di esser piu chiaro.
La nostra applicazione utilizza delle vecchie librerie, che sfortunatamente
nn si riescono piu a compilare (ne tanto meno conosciamo la versione da
compilare)
Ho trovato (dopo aver scritto qui) il problema; ed è uno sciocco MessageBox
lasciato
in queste librerie un po a casaccio :( ... il che conferma il fatto che la
sua visualizzazione
nn ha alcun effetto, ne tanto meno è veritiero di un errore.
Non potendo ricompilare queste libs vorrei bloccare il pop-up a partire
dalla applicazione
che le utilizza, ovvero la mia ! :)...
so che esiste una sorta di "statement" che nn consente ad un applicativo di
generare
pop-up, dovrebbe essere SetErrorMode.
Ne sai qualcosa ?... (qualcuno ne sa qualcosa??)
Ho omesso di dire che utilizzo Microsoft Visual C++ 6.0
Spero di esser stato piu chiaro nella esposizione del problema,
in modo da consentire a tutti di intervenire...
Grazie mille.


 Ho omesso di dire che utilizzo Microsoft Visual C++ 6.0
Purtroppo non so dirti. Da come ne hai parlato sembra una msgbox 
generata da codice utente, e non un messaggio di windows, quindi non
credo ci sia modo di eliminarlo con la SetErrorMode.
Ad ogni modo si tratta di argomenti che sarebbe meglio trattare in
un altro gruppo, tipo it.comp.programmare.win32 poiche' non si
tratta di problematiche del linguaggio C ma della piattaforma. In
quel gruppo e' piu' probabile trovare gente che ti sappia rispondere!
ciao
Giacomo

Grazie Giacomo per la tua gentilezza,
proverò nel newsgroup da te suggerito
Saluti

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c
Titolo: Un piccolo aiuto ...

Salve a tutti !
Qualcuno puo' dirmi il metodo da usare per risolvere il seguente
problema ?
Ho n(<=8) terminali . Devo trovare il modo di collegarli in serie ,
ottimizzando la lunghezza totale dei fili di collegamento (in pratica
scegliere il percorso minore che mi collega tutti i computer in serie,
senza un inizio e una fine stabiliti).
Grazie in anticipo .
Biagio.
--------------

senza un inizio e una fine stabiliti).
Presumibilmente hai una matrice di adiacenza o altro modo
per ottenere il "costo" (distanza) fra due terminali identificati
da I e J compresi fra 1 e 8.  Il numero totale di permutazioni
di 8 elementi e` 8 fattoriale, pari a meno di quarantamila;
vista dunque la dimensione minuscola del problema, il primo
approccio da considerare e` quello esaustivo: genera e
prova tutte le permutazioni, ricordando quella di costo totale
minimo incontrata nel percorso.  Se ottenere il "costo" di
connessione diretta I->J e` un'operazione onerosa, puoi
ammortizzarla con una piccola cache (solo 64 numeri!).
Se hai problemi a generare le permutazioni, o, se occorre,
a implementare una cache, posta ancora...!
Se N fosse anche di poco maggiore, un approccio di tipo
esaustivo perderebbe rapidamente di fattibilita`, vista la
velocita` paurosa con cui cresce il numero di permutazioni
(N fattoriale).  In generale, si devono usare approcci
euristici, che cioe` non garantiscono di trovare la vera
soluzione ottimale, ma solo "provano ad avvicinarvisi";
questo problema, detto "del commesso viaggiatore", e`
infatti NP-hard (non suscettibile di soluzione in tempo
O(f(N)) per qualsiasi f(N) "solo" polinomiale, ecc ecc).
Alex

Newsgroup: it.comp.lang.c
Titolo: DJGPP + RSXNTDJ + ALLEGRO

Ciao a tutti,
come da subj so che č possibile compilare programmi directx con
winallegro + rsxntdj:
ho provato a settare il tutto ma quando provo a fare un make dei demo di
rsxntdj mi dice:
C:\djgpp\RSXNTDJ\SAMPLE\CONSOLE\ARGVENV>make
gcc -Zwin32 -c -Wall -O argvenv.c
In file included from c:/djgpp/include/unistd.h:13,
                 from argvenv.c:10:
c:/djgpp/include/sys/types.h:29: warning: redefinition of `size_t'
c:/djgpp/rsxntdj/include/win32/wingnuc.h:58: warning: `size_t'
previously declared here
In file included from argvenv.c:12:
c:/djgpp/include/stdlib.h:34: conflicting types for `wchar_t'
c:/djgpp/rsxntdj/include/win32/wingnuc.h:48: previous declaration of
`wchar_t'
argvenv.c: In function `check_rsxnt_runtime':
argvenv.c:32: `_emx_env' undeclared (first use this function)
argvenv.c:32: (Each undeclared identifier is reported only once
argvenv.c:32: for each function it appears in.)
argvenv.c:33: `_emx_rev' undeclared (first use this function)
argvenv.c: In function `main':
argvenv.c:70: warning: implicit declaration of function `_envargs'
argvenv.c:71: warning: implicit declaration of function `_response'
argvenv.c:72: warning: implicit declaration of function `_wildcard'
argvenv.c:91: `errno' undeclared (first use this function)
make.exe: *** [argvenv.o] Error 1
Qualcuno sa perchč??
Grazie
- Pietro -
Newsgroup: it.comp.lang.c
Titolo: Allocazione dinamica di memoria ?

Cari amici
Spero che la domanda che sto per porvi sia banale. Perchè io sono una
neofita del C è se la soluzione dovesse essere troppo complessa sarei
veramente nei pasticci!!
Allora, ecco il dilemma:
ho dei dati, diciamo di tipo float, in un vettore che indichiamo con
vet = (v1 , v2, v3 , v3 , ... , vn) .
E non posso farci niente, nel senso che sono stati disposti lì in quel
modo (invece, ad esempio, che in una matrice) da una funzione sulla quale
non ho modo di intervenire (sostanzialmente, perchè è così che dialoga con
un applicativo esterno e riceve i dati disposti in quella maniera).
Bene, adesso devo passare questi dati ad una funzione f che viene definita
in una libreria preconfezionata sulla quale ancora una volta non ho modo
di intervenire (né saprei farlo).
Problema: la f vuole in input una matrice mat. Che fare ?
Potrei fare una cosa di questo genere
mat[0][0] = vet[0];
mat[0][1] = vet[1];
mat[0][2] = vet[2];
mat[1][0] = vet[3];
mat[1][1] = vet[4];
mat[1][2] = vet[5];
e così via ... ma sarebbe una duplicazione che comporta un enorme ingombro
di memoria.
Infatti , se il numero degli elementi del vettore vet è piccolo, va tutto
bene.
Ma se stiamo parlando di un vettore di un milione e più di elementi ?
Devo allocare memoria per un altro milione e più di elementi ?
(Il sistema acquisisce  i dati il quella maniera e 
io non posso intervenire in questo processo.)
Mi chiedevo non sarebbe possibile dichiarare una matrice mat (diciamo di
mille righe e mille colonne, se il vettore vet è di un milione di
elementi) e forzare il sistema (Ah, scusate! Quale sistema? Windows 98 SE
e ancora una volta su questo non posso intervenire.) ad assegnare come
indirizzo del suo primo elemento quello del primo elemento del vettore
vet? Così forse concorderebbero anche i successivi e la funzione f non
avrebbe di che lagnarsi quando si vede arrivare mat.
La cosidetta 'allocazione dinamica di memoria' è una cosa che può servire
ad uno scopo simile ? Ed, eventualmente, dove posso trovare un tutorial
che mi insegni come fare?
Grazie per la pazienza di avermi letto.
Giovanna
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Devo allocare memoria per un altro milione e più di elementi ?
no, nel tuo caso il vettore vet rappresenta già la matrice bidimensionale
linearizzata. Infatti in memoria la matrice mat è necessariamente
rappresentata proprio come un vettore ad una dimensione.
credo che il tuo caso sia una cosa del genere:
void printmatr(int b[3][3]){
int i,j;
for(i=0;i<3;i++)
        for(j=0;j<3;j++) printf("b[%d][%d]=%d\n",i,j,b[i][j]);
}
main(){
int a[9];
int i;
for(i=0;i<9;i++) a[i]=i+1;
printmatr(a);
}
Passando il vettore "a" alla procedura printmatr ti accorgi che è visto come
una matrice 3x3.
Ciao
-- 
none
Newsgroup: it.comp.lang.c
Titolo: emissione beep

Ciao a tutti,
mi chiedevo, se era possibile con qualche funzione standard o non, far
beeppare un pc su cui gira win98 o il solo DOS (uso TurboC).
grazie 
ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 grazie
basta fare
printf("\aEcco il beep!")
\a fa fare il beep
bye

 ciao
Oltre alla soluzione di Roberto con il Turbo C mi pare fossero presenti 2
funzioni:
sound(frequenza_in_Hertz); e nosound(); con qualcosa del genere avrai
qualcosa di + malleabile...
#include <conio.h>
#include <dos.h>
...
sound(440);
delay(2000);
nosound();
...
ricorda che il tutto non è portabile e con compilatori differenti dal
TurboC il nome delle funzione potrebbe essere diverso o addirittura non
presente...
Bye Dave.

Newsgroup: it.comp.lang.c
Titolo: Problerma trasmissione carattere NULL

Saluti a tutti
Qualcuno sa dirmi per quale motivo non riesco a trasmettere dei caratteri 
NULLI in RS232.
Premetto che sto utilizzando un programma in C con Linux, utilizzando la 
libreria Termios.
Probabilmente sbaglio qualche parametro ,ma non rieco a capire quale.
Grazie anticipatamente per l'aiuto. 


Personalmente non ho mai mandato caratteri NULL da una seriale.
Ma quando devo mandare un carattere particolare metto d'accordo i vari
giocatori in
campo affinchè riconoscano come voglio io un determinato valore:
Esempio:
   0xFF == NULL

    0xFF == NULL
Luca
Newsgroup: it.comp.lang.c
Titolo: Domanda:

Supponiamo che in un main abbia una cosa di questo genere:
char *sbuf = '\0';
function(sbuf);
printf("%s\n", sbuf);
mentre la funzione function(char *sbuf) fa tutta una serie di operazioni
e alloca memoria in questo modo:
sbuf = (char *) malloc (stringalunga);
strcpy(sbuf, "pippo");
Ora, come mai quando la funzione termina la variabile sbuf nel main non
punta alla stringa "pippo"?
Chiedo scusa se la domanda è banale...
    Stefano
-- 
Posted from 
astmim.merate.mi.astro.it
 [192.167.38.1] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

-- snip
Ciao Stefano,
per far si´ che nel main sbuf punti alla stringa pippo, devi passare alla
funzione dove fai la strcpy, un puntatore a un puntatore a char e non
semplicemente un puntatore a char come fai tu.
Mauro

 punta alla stringa "pippo"?
Perche` passi per valore. 
prova cosi`:
void funzione(char **stringa) {
	(*stringa) = malloc(100);
	...
}
int main () {
	char *stringa;
	funzione(&stringa);
	...
}
oppure cosi`:
char *funzione(void) {
	char *tmp;
	tmp = malloc(100);
	...
	return tmp;
}
int main () {
	char *stringa;
	stringa = funzione();
	...
}
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Non ho ancora capito se il mio cane e` maschio o femmina:
quando fa la pipi` si chiude in bagno

 punta alla stringa "pippo"?
prova a creare una funzione che ritorna il puntatore "manipolato"
char *funzione(sbuf)
{
    sbuf = (char *) malloc (stringalunga);
    strcpy(sbuf, "pippo");
    return sbuf;
}

Ottimo!
Avevo sospettato che la cosa potesse dipendere da una certa confusione fra
puntatore a char e puntatore a puntatore a char... ma non avevo cultura
sufficiente.
Che dire? E' un newsgroup prezioso!
Grazie a tutti,
            Stefano

Chiedo scusa se la domanda e banale...
Le domande non sono mai banali.
Spero di essere chiaro, sono concetti che possono metterti fuori
strada..
Allora, non ti far ingannare dal fatto che tu stai passando un
puntatore. 
Se la tua funzione fosse cosi':
void function(char  *sbuf)
{
  strcpy(sbuf, "pippo"); 
}
funzionerebbe (pero' avresti deviato dai tuoi propositi).
In realta' con il tuo modo, tu passi un puntatore sbuf alla tua
funzione, ma non passi l'indirizzo del puntatore.
Confusione?
Quando scrivi
void function(char *sbuf) { }
tu in effetti dichiari la variabile LOCALE sbuf. 
Chiamando la funzione tu stai dicendo
sbuf(locale)=sbuf(nella main), pero' le due sono due entita' diverse
che finiscono di coincidere allorche' tu scrivi
sbuf = malloc(quanti bytes voglio allocare);
in questo momento la sbuf della main non coincide piu' con la sbuf
della funzione function e tu hai memorizzate due variabili che si
chiamano sbuf: una e' quella nella main e punta all'indirizzo x,
l'altra e' in function e punta all'idirizzo y.
Per quello ti viene suggerito di passare un puntatore a puntatore...
prova a pensarci...
Non ti far ingannare dal fatto che passi un puntatore:  non signifita
assolutamente nulla , e' sempre e comunque un passaggio per valore e
quindi la variabile che acquisisce il valore viene distrutta non
appena trova la parentesi graffa }
Igor ROssetti

Ringrazio anche te.
Comunque ora mi è chiaro dove fosse il problema.
    Stefano
Newsgroup: it.comp.lang.c
Titolo: problemi di CASTING

ho questa funzione:
// BYTE = unsigned char
BYTE LinearB(BYTE a, BYTE b, float z)
{
 return (a * (1 - z)) + (b * z);
}
è matematico che torna un numero intero, peròdeve operare con il float z
il compilatore mi da questo warning (VC++6):
Deleting intermediate files and output files for project 'AlphaSplash -
Win32 Release'.
--------------------Configuration: AlphaSplash - Win32
Release--------------------
Compiling...
AlphaSplash.cpp
D:\AlphaSplash\AlphaSplash.cpp(218) : warning C4244: 'return' : conversion
from 'float' to 'unsigned char', possible loss of data
Linking...
AlphaSplash.exe - 0 error(s), 1 warning(s)
anche se eseguo e tutto funziona bene, vorrei capire come evitare ciò...
--
ciao
..::[xaero]::..

non fa niente...
ho convertito tutto cosě:
float LinearB(float a, float b, float z);
e va tutto bene


...



anche se eseguo e tutto funziona bene, vorrei capire come evitare ciò...
metti un cast a intero
  return (int)(a*(1-z)+b*z);
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 Falso. a=1, b=2, z=0.5 -> return 1.5
intendevo dire che da come uso questa routine non si verificherà mai una
cosa del genere
grazie

Newsgroup: it.comp.lang.c
Titolo: Manuali C

Ciao a tutti,
Sono nuovo del NG e del linguaggio C (mai visto fino ad ora :), potreste
consigliarmi un libro FACILE e possibilmente anche completo per iniziare con
il C? (magari del tipo "For Dummies" se ce ne sono...).
Grazie,
Francesco

 il C?
Kernighan & Ritchie - Il linguaggio C - Seconda edizione. E' il
migliore.
EMG

: Sono nuovo del NG e del linguaggio C (mai visto fino
ad ora :), potreste
: consigliarmi un libro FACILE e possibilmente anche
completo per iniziare con
: il C? (magari del tipo "For Dummies" se ce ne
sono...).
:
io (da principiante) sto leggendo 'tricky c' (in
italiano) e trovo che non č niente male..
si tratta di una serie di appunti su C scritti da un
tizio, in formato html
cercalo

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

cercalo
Attenzione ragazzi : ho appena iniziato anch'io ma e' meglio che
usiate anche il solito K&R , anche se anch'io seguo Tricky C ci sono
cose che a quanto pare non sono esattissime...anche da quello che ho
sentito dire sul NG.Un esempio : provate a settare il compilatore di
riconoscere solo codice ANSI C e dategli,come da Tricky C :
void main(void)
Otterrete un bel "main must have a return type of int"...e qui ci
vorrebbe il buon Laforgia per spiegarci come mai...perche' almeno
teoricamente non mi sembra sbagliata...:-)


teoricamente non mi sembra sbagliata...:-)
Il modo corretto di definire main() e' per l'appunto (escludendo l'uso
di parametri) :
int main( void ) 
{
  ...
  return numero ;
}
L'importante pero' non e' che main() restituisca o meno un valore
mediante return ma che sia dichiarata come funzione che ritorna un
intero, perche' la sua chiamata risponda in modo corretto alle
convenzioni del codice di start-up del programma.

, 
fr...@elios.net
 
says...
 C manuale di programmazione 2 Edizione Peter A.Darnell,Philp E.Margolis
edito da McGraw-Hill.Costa sulle 60000 e parte da zero,ma presuppone una 
buona conoscenza del calcolatore che si usa.
Ciao!

buona conoscenza del calcolatore che si usa.
Idem... sto facendo Info 1 al Poli e devo dire che mi sono trovato
benissimo!