mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: variabili globali dichiarate in una funzione...possibile ?

Salve a tutti. Innanzi tutto scusate l'ingenuita' della domanda.
La domanda:
E' possibile far si che dall'interno di una funzione si possano 
dichiarare delle variabili globali ?
Grazie
Ciao
	MaX


Direi proprio di no.
In generale le variabili che dichiari all'interno di una
funzione sono "visibili" solo all'interno di quella funzione.
Non solo, ma non puoi nemmeno passare all'esterno della funzione
un riferimento ad una variabile dichiarata staticamente all'interno
della funzione.
Per esempio, un errore molto comune di chi comincia a programmare
e' questo
char *Pippo()
{
    char buff[200];
    /* riempio buff in qualche modo */
    return buff;
}
Dove si passa all'esterno il puntatore a buff, che
pero' disgraziatamente cessa di esistere all'uscita della
funzione... (nel senso che il compilatore puo' o meno
riutilizzare la memoria usata da buff per altre cose)
La cosa di cui sopra e' invece fattibile dichiarando
variabili dinamiche (cioe' allocando esplicitamente memoria,
che non verra' quindi de-allocata automaticamente all'uscita
dalla funzione):
char *Pippo()
{
    char *buff;
    buff = malloc(200);
    /* riempio buff in qualche modo */
    return buff;
}
In questo modo e' possibile allocare (ma non "dichiarare"!) una zona di 
memoria che puo' essere considerata globale,
nel senso che poi altre funzioni possono lavorarci sopra,
se passiamo loro il puntatore.
ciao,
g.

>
Delle specie di "variabili globali dentro la funzione" sono le "static". Le
variabili dichiarate static dentro una funzione sono visibili solo dentro
quella funzione, come le locali, però esistono anche prima e dopo la
chiamata di funzione. Esempio
   void MiaFunz (void)
   {
      static Conta = 1;
      printf("%d\n", Conta);
      Conta++;
   }
La prima volta che chiami MiaFunz(), stamperà "1", la seconda volta "2",
ecc. Senza lo "static", la variabile "Conta" viene creata e inizializzata a
ogni chiamata (e distrutta all'uscita), quindi MiaFunz() stamperebbe sempre
"1".
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 static Conta = 1;
Oops...
       static int Conta = 1;


 della funzione.
Riformulo solo per evitare confusioni: l'indirizzo di una variabile
dichiarata all'interno di una funzione non può essere riutilizzato dalle
funzioni chiamanti; tutta via se la variabile è dichiarata 'static'
allora si può fare.
<ERRORE>
char *Pippo()
{
    char buff[200];
    /* riempio buff in qualche modo */
    return buff;
}
</ERRORE>
<CORRETTO>
char *Pippo()
{
    static char buff[200];
    /* riempio buff in qualche modo */
    return buff;
}
</CORRETTO>
Newsgroup: it.comp.lang.c
Titolo: error L1070: _TEXT : segment size exceeds 64K

Salve, sto sviluppando un'applicativo in c per drdos su palmari Symbol in
VC++ 1.51
Il programma ha acceduto le specifiche del memory model small, ho provato a
impostare medium, ma quando eseguo il programma sul palmare mi va in errore.
Avevo in mente due soluzioni al problema, spero in vostro aiuto per
attuarle..
1) Far funzionare l'applicativo sul palmare con memory model + alti..
    Non so come fare e c'è l'inconveniente che il palmare utilizza molta
della sua memoria (4MB)  per i dischi virtuali..
2) Usare l'opzioni di compilazione #if #elseif #endif
    Il programma ha 3 possibili modalità di fiunzionamento che io racchiudo
in delle if normali su delle costanti che vario manualmente a ogni
compilazione...
Se io riuscissi invece a utilizzare #id #elseif #endif al posto delle if
semplici potrei mantenere il memory model basso?
E come dovrei definire tali costanti?
Dei due metodi preferirei di gran lunga il secondo.
Un sentito grazie a chi mi aiuterà.
Ciao
Luther

 E come dovrei definire tali costanti?
Se utilizzi gia' delle if con delle costanti, e il compilatore e' appena 
un po' intelligente e ha su le ottimizzazione, sicuramente avra' gia' 
eliminato i branch che non puo' prendere. Questo significa che con la 
sostituzione che proponi non otterresti un gran che'. Comunque fai la prova.
Comunque - per riuscire a superare i 64 Kb di segmento text mi pare che 
tu debba aver scritto molto codice... almeno, questi erano i miei 
ricordi al tempo della programmazione DOS, in cui cose del genere 
succedevano solo quando scrivevo porcate ;D.
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003


Ma....
comunque avevo definito una variabile e non una costante... cambiando la
variabile in costante ho risolto...
Bastava anche un indizio... grazie.
Programmo con i piedi lo so, ma ho dovuto disegnare molte "maschere" e
questo mi ha tolto spazio, sicuramente utilizzando file esterni per le
maschere(non è detto che non lo faro') avrei ridotto di molto il tutto..
/
Newsgroup: it.comp.lang.c
Titolo: Librerie dos

Sto imparando il C sotto dos
utilizzo il Turbo C,mi servirebbero delle librerie
per la gestione delle directori,cioe' ad esempio
per fare quello che fa il comando "dir",cioe' avere
l'elenco dei file in una directori,e anche la lista delle directori.
Esistono nel Turbo C funzioni che permettano cio'?
Io ho un libro sul Turbo C ma non riporta questo tipo di librerie.
Grazie
 
bi...@tin.it

Pensate che quella chiavica di Bixio, ha suscitato in me emozioni
indescrivibili, scrivendo :
#Sto imparando il C sotto dos
#utilizzo il Turbo C,mi servirebbero delle librerie
#per la gestione delle directori,cioe' ad esempio
#per fare quello che fa il comando "dir",cioe' avere
#l'elenco dei file in una directori,e anche la lista delle directori.
#Esistono nel Turbo C funzioni che permettano cio'?
#Io ho un libro sul Turbo C ma non riporta questo tipo di librerie.
Ciao Bixio,
Il Turbo C possiede delle funzioni, capaci di ricercare dei file su disco, allo
stesso modo del comando dir, vedi "findfirst()" e "findnext()".
Ti ho scritto il programma seguente per farti vedere come si usano :
#include <stdio.h>
#include <dir.h>
#include <dos.h>
#include <stdlib.h>
#define ANY_FILE    "*.*"
#define ANY_ATTRIB  (FA_RDONLY+FA_HIDDEN+FA_SYSTEM+FA_DIREC+FA_ARCH)
void main()
{
   struct ffblk file_info;
   int error;
   char path_completo[256];
   _fullpath(path_completo, "", 256);
   printf("\nelenco dei file di %s\n\n", path_completo);
   error = findfirst(ANY_FILE, &file_info, ANY_ATTRIB);
   if (error)
      puts("(vuota)");
   else
     while (!error)
     {
	printf(" %-15s ", file_info.ff_name);
	if (file_info.ff_attrib & FA_DIREC)
	   printf("<DIR>\n");
	else printf("%12ld byte\n", file_info.ff_fsize);
	error = findnext(&file_info);
     }
}
Ciao !
--------------------------------------------------------
Andrea      
---------------------------------------------------------------------------
Altro che sconti Telecom ! fatevi un bel panino con la Nutella...
---------------------------------------------------------------------------
per le risposte via e-mail togli CHITIHACHIESTONIENTE!!!! dal mio indirizzo
---------------------------------------------------------------------------
ICQ# 8143647
---------------------------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: sempre allocazione matrici 3D

Salve, ho avuto ancora problemi per l'allocazione di matici 3D.
nel post precedente ero arrivato ad avere una routine di allocazione del
tipo che posto in seguito (gimme_space3D e free:space3D)
purtroppo adesso mi accade una cosa strana, non riesco ad allocare 2
matrici.
Se ne alloco una, no problem, se ne alloco un'altra di dimensioni diverse mi
va in crash (win + visualstudio6).
Le dimensioni nn sono esagerate (176*144*10 di unsigned char, circa 254 Kb
per matrice..)
mi date una mano? grazie !!
/***** allocazione 3d *******/
#define WIDTH 176
#define HEIGHT 144
#define TIME 10
typedef unsigned char *** 3D;
unsigned char ***gimme_space3D(int width,int height,int time);
void free_space3D(unsigned char*** first,int time,int height);
//main
int main(int argc,char * argv[])
{
 3D clip;
 3D clip2;
clip = gimme_space3D(WIDTH ,HEIGHT ,TIME );
clip2 = gimme_space3D(WIDTH,TIME ,HEIGHT ); // <------- questo manda in
crash
return 0;
}
//routines allocazione/deallocazione
unsigned char ***gimme_space3D(int width,int height,int time)
{
 int i,j,k;
 unsigned char ***matrix = (unsigned char ***)malloc(time * sizeof(unsigned
char **));
 for(k = 0; k < time; k++)
 {
  matrix[k] = (unsigned char **)malloc(height * sizeof(unsigned char*));
   for (i=0;i<height;i++)
    matrix[k][i] = (unsigned char *)malloc(width * sizeof(unsigned char));
 }
 for(k=0;i<time;k++)
  for(i=0;i<height;i++)
   for(j=0;j<width;j++)
   matrix[k][i][j]=(unsigned char) 0;
 return matrix;
}
void free_space3D(unsigned char*** first,int time,int height)
{
 int i,j;
 for(i = 0; i < time; i++)
 {
  for(j = 0; j < height; j++)
   free(first[i][j]);
  free(first[i]);
 }
 free(first);
}

  for(k=0;i<time;k++)
for(k=0;k<time;k++)
ciao,
Drago.


..che vergogna... :-)
bye!!
jojo.
Newsgroup: it.comp.lang.c
Titolo: Problema return

Salve, sto studiando da poco il C e ogni tanto faccio qualche
esercizio. Ora ho un problema che proprio non capisco:
http://pastebin.com/f81e8aa2
Quando vado a compilarlo, mi da il seguente errore:
warning: return makes integer from pointer without a cast
Se qualcuno di voi mi spiega qual'è l'errore mi fa un piacere.
Grazie in anticipo.


La funzione stringupper() deve ritornare un char (che è un intero
corto, 8 bit) e tu ritorni un puntatore (return s).
Se vuoi tornare il puntatore devi dichiarare char *stringupper(...),
se vuoi ritornare il carattere puntato da s devi dichiarare char
stringupper(...) e usare return *s invece di return s.


la funzione è dichiarata ritornare un carattere, ma ritorna un 
puntatore a carattere.
char stringupper(char *s) {
   ....
   return s;
}
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 warning: return makes integer from pointer without a cast
Il C considera il tipo 'char' come appartenente agli interi per cui il
compilatore ti sta segnalando che quell'istruzione di ritorno sta creando
un intero a partire da un puntatore ma non c'� nessun cast esplicito (da
puntatore a char/intero). E' ovvio che devi dichiarare il tipo di ritorno
'char*' e non solo 'char' perch� sia compatibile col tipo della variabile
restituita.
Non ti offendere ma con un minimo di sforzo, e considerato che il
compilatore ti indica anche la linea del codice, questo warning saresti
riuscito a risolverlo da solo. 
-- 
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: rifo : rotazione 3d come eliminare lo sfarfallio ? - rota.c (0/1)

Sono un hobbista e mi diletto di tanto in tanto in linguaggio C ,
potete scaricare il listato per compilatore PowerC  per dare
un'occhiata e utilizzarlo o modificarlo come piu' vi aggrada ,
qualcuno piu' esperto potrebbe indicarmi come eliminare lo sfarfallio
che si nota durante la rotazione del cubo ?.
P.S. utilizzando in grafica
char far *video = 0x0a0000000L
video[] = 4/* numero int del colore*/ ; 
ho notato una velocizzazione in scrittura video anche in VGA o SVGA
640x480x256 ma non riesco ad utilizzarla in tutto lo schermo , come
posso accedere all'intera pagina.
Ringrazio chi ha precedentemente risposto.

posso accedere all'intera pagina.
visto che 640*480 sono 300K, non puoi accedere a tutta la memoria
usando il solo segmento A000, perche` useresti solamente i primi 64K.
le soluzioni sono diverse, ma la migliore e` quella di utilizzare il
linear frame buffer tramite il vesa 2.0, disponibile solo in modo
protetto.
se sei in modo reale devi chiamare un apposita procedura che dice alla
scheda video quale parte dei 300K mappare all'indirizzo A0000.
per info sul vesa vai al sito 
www.scitechsoft.com
 
ciao
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343
Newsgroup: it.comp.lang.c
Titolo: come usare più file

Salve, nel mio tribolante percorso nell'imparare a programmare in C mi sono
ritrovato nel dover compilare un programma con sorgenti in più file.
Questo mi ha dato modo di cominciare a studiare le problematiche dei file
*.h, però vorrei leggere qualcosa in merito, qualcuno ha da darmi un link?
Inoltre, volendo usare delle variabili locali dove le metto?
Io ho provato a metterle in un file *.h , ma il compilatore fa casini.
Potete aiutarmi?
Saluti
-- 
Angelo M. Figundio
ang...@figundio.it
www.figundio.it
***********************************************
E il mio signore lo sa
una sola volta non basterà
che l'avvoltoio divori il mio corpo
per far tacere per sempre il mio cuore
(A. Branduardi)
*******************************************

 Saluti
Si' - cercare con google sui vecchi post di questo gruppo, dove piu' 
volte si e' parlato di come si usano i file header, oppure un qualunque 
libro di testo di C :)
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://www.cs.unibo.it/~mbellett
Linux registered user 299762 @ Linux registered machine 213003

"Angelo Massimo Figundio" <figundi...@windNOSPAM.it> ha scritto nel
messaggio news:ceatna$7sf$1...@lacerta.tiscalinet.it...

scusa, ma sei vuoi usare variabili locali mi sembra ovvio metterle
all'interno delle funzioni nelle quali vengono usate. Il link per la tua
richiesta precedente non lo conosco, ma so che se metti le variabili
"locali" in un altro file, diventano globali, non trovi?
-- 
Cordialmente
Periodico 3 - Minidisc
mini...@periodico3.it
-----------------------------------------------------------------
Visita il mio sito all'indirizzo web:
http://www.periodico3.it
oppure scrivimi a
mini...@periodico3.it
Potrai anche registrarti avendo così una casella email totalmente gratuita
di spazio illimitato del tipo:
nome_sce...@periodico3.it
in 12 ore.

 Potete aiutarmi?
che sistema operativo usi?

 > *.h, perň vorrei leggere qualcosa in merito, qualcuno ha da darmi un

Newsgroup: it.comp.lang.c
Titolo: Compilatore c da usare con XP

Salve! Qualcuno conosce dove scaricarlo free? Grazie! Dev'essere il più
semplice in assoluto, mi raccomando!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 semplice in assoluto, mi raccomando!
scegli:
http://www.thefreecountry.com/compilers/cpp.shtml
ciao.

 semplice in assoluto, mi raccomando!
che vuol dire il piů "semplice in assoluto"? forse volevi dire potente...?
-- 
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: fclose() che non chiami close()

per fre operazioni su un socket uso il suo filedescriptor con fdopen
creo uno stream FILE* su cui posso fare operazioni I/O di piů alto
livello che read e write.
Se chiamo fclose chiudo lo strema e anche il filedescriptor che ci stava
sotto, cosěcché se poi richiamo fdopen su quel filedescriptor ottengo
solo un bel segmentation fault.
E' possibile avere una chiamata tipo fclose che elimini lo stream e che
perň lasci aperto il descrittore del file?

 però lasci aperto il descrittore del file?
ma scusa, non ti basta un fflush() ?

 perň lasci aperto il descrittore del file?
Il problema non e' molto chiaro.
Potresti postare il pezzo di codice incriminato? Qui sei un po' OT, puoi
spedirmelo nella mia mbox.
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 spedirmelo nella mia mbox.
non serve. Perché prima l'ho sistemato per evitare di dover aprire e
chiudere gli stream ogni volta. E dopo che l'ho sistemato e ho avuto il
meso sistema di messaggistisca tra processi la professoressa ha detto he
era un sistema troppo complesso e me lo ho cassato perché troppo
complesso.
Peccato, ricordava molto il microkernel mach... Era tanto carino...
Newsgroup: it.comp.lang.c
Titolo: Riconoscere la chiusura di Windows

Ciao a tutti, è possibile riconoscere la chiusura di windows? Così posso fermare il mio programma che fa dei log prima che termini la sessione... Grazie
-- 
Nedo VI 
------------------------------------------------------------------------
View this thread: 
http://www.itsistemi.net/viewtopic-821241.html
Inviato via 
http://www.itsistemi.net

 Ciao a tutti, č possibile riconoscere la chiusura di windows? Cosě posso fermare il mio programma che fa dei log prima che termini la sessione... Grazie
sei sul gruppo sbagliato.
vai su
it.comp.programmare.win32
ciao,
g.

Newsgroup: it.comp.lang.c
Titolo: Un caratere sconosciuto.

Ciao a tutti.
Osservate l'esempio di codice presente alla pagina 
http://edu.os3.it/html/manual/impararec/node608.html
La linea etichettata con il numero 28 riporta:
     28             fprintf (stderr, "Unknown character `\\x%x'.\n", 
optopt);
Cosa significa la stringa `\\x%x'?
Saluti a tutti e grazie per le risposte, sempre esaurienti.
Bizio.

 Cosa significa la stringa `\\x%x'?
\\ serve per stampare una \
x serve per stampare una x
%x serve per stampare il numero optopt in esadecimale.
Dunque se ad esempio optopt vale 254 il risultato del printf dovrebbe 
essere:
Unknown character `\xfe'.
E.

 %x serve per stampare il numero optopt in esadecimale.
Fin qui ci siamo. Volevo un po' di conforto sul fatto che i simboli di 
accento grave e apostrofo, presenti all'inizio e alla fine della stringa 
che ho postato, non c'entrano nulla con il codice del programma. 
Grazie e un saluto 
Bizio.

 che ho postato, non c'entrano nulla con il codice del programma.
Credo che stampino un accento grave e un apostrofo ;-) sono i caratteri ` e 
' , sono presenti sulle tastiere americane ma non su quelle italiane.
Pleg
Newsgroup: it.comp.lang.c
Titolo: Oggetto Time?

Dovrei realizzare una funzione che mi restituisce il numero dei
secondi tra due date (pensavo di usare datediff(first,second)), ma il
problema è che non riesco a costruire una struttura "second"
contenente la data inserita da me (mentre per first scrivo
first=time(NULL));
Come posso fare?
Grazie mille.
Bco°
----------------------------
ICQ: 30331316
E-mail: sbicelli@yahoo****.com
Homepage 32x32Icons: 
http://members.xoom.it/32x32icons/index.htm
----------------------------
Se qualcosa può andar male lo farà.
----------------------------

 secondi tra due date (pensavo di usare datediff(first,second)),
Questa funzione a me non risulta. Dove si trova?
EMG

secondi tra due date (pensavo di usare datediff(first,second)),
Stai parlando forse della difftime() ? (non conosco la datediff)
Se si' sappi che i due numeri da passare alla difftime sono dei comuni
long che, secondo l'help del TurboC++, contengono il numero di secondi
passati dal 1-gen-1970 ora 0:0:0 GMT.
Non conosco nessuna funzione standard che converta un data in un
numero seriale/quantita' di secondi e quindi penso che te la devi
fare. Una volta scritta la funzione basta che la richiami un paio di
volte e fai la differenza. Ti consiglio di lasciar perdere la difftime
anche perche' c'e' il problema che lei considera l'ora 0 GMT e quindi
hai una differenza di alcune ore.
ciao



Sì, intendevo la difftime(), solo che mentre scrivevo pensavo alla
differenza tra date.
Se non posso usare la difftime(), per ottenere il  numero di secondi
(o minuti oppure ore) c'è un'altra funzione che fa al caso mio oppure
devo realizzarla?
Grazie ancora.


Grazie ancora.
prego
ciao

 fare. 
mktime()
Non si capisce, dalla man page, se il nuovo standard la consideri
o se sia solo una funzione POSIX.
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

o se sia solo una funzione POSIX.
POSIX = roba per Unix ?
Io la funzione l'ho trovata nel TurboC++ 3.0 e dice che e' standard
ANSI.
ciao
Newsgroup: it.comp.lang.c
Titolo: Viruses in c++

E' possibile sviluppare un virus per Windows in Borland C++ Builder.
Serve qualche libreria particolare.Potreste darmi informazioni dettagliate o
al massimo indicarmi qualche sito con una documentazione approfondita?
E' chiaro che la domanda è per solo scopo culturale.
Ciao da Teddy&Max

> E' chiaro che la domanda è per solo scopo culturale.
Anche io mi sono collegato alla mia banca solo a scopo culturale, ma non mi
hanno creduto
--
Alessandro Monti

E' chiaro che la domanda è per solo scopo culturale.
Scusa la banalità della risposta, ma a che pro scrivere un virus per
Windows, se Windows stesso e' un virus ? (pensaci : si attacca al boot
sector del disco, rimane residente in memoria, fa bloccare spesso il
PC e richiede non poche volte la formattazione del disco) ;)
ehehehe....
Comunque su it.comp.programmare.win32 forse trovi un aiuto migliore...
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

 PC e richiede non poche volte la formattazione del disco) ;)
Sono assolutamente contrario, per una serie di ragioni già note ai
frequentatori di Internet. Ti cito solo quelle a mio avviso principali:
-un virus è costituito da codice efficentissimo, che agisce prima ancora che
l'utente abbia il tempo di accorgersene. Win no
-un virus è ottimizzato a tal punto che non spreca neanche un byte più dello
stretto necessario per le funzioni che deve compiere. Win no
-un virus quasi non occupa memoria, dovendo rimanere il più possibile
nell'ombra. Fa il suo compito senza diventare l'elemento preponderante del
sistema. Win no
-un virus normalmente ha una sola versione, già perfettamente funzionante.
Le eventuali modifiche introducono nuove funzionalità senza però andare in
conflitto con le versioni precedenti. Win no
-un virus, anche dopo la formattazione, non richiede di essere reinstallato
:-)
-l'autore è perfettamente consapevole del codice che ha scritto, ed è in
grado di capire ogni errore che dovesse capitare (ma normalmente non ne
capitano)
Per tornare ad una delle domande originali, te lo vedi un virus che si
trascina 500Kb di librerie? Win si trascina una trentina di mega di librerie
:)
--
Alessandro Monti

> Un virus pero' non ti obbliga ad acquistarlo ! Win si' ! eh eh eh ...
Ecco un motivo in più per cui windows non è un virus: un virus è SEMPRE
gratis :-)
--
Alessandro Monti
Newsgroup: it.comp.lang.c
Titolo: ShellExecute in c++ builder 3 - Aiutatemi per favore

Premeto di essere nuovo del C++ Builder.
Sto realizzando un programma con un eseguibile per ogni maschera.
A tal proposito sto utilizzando la funzione "ShellExecute" per
attivare dalla finestra prncipale tutte le altre mschere di programma.
Il mio problema è passare un valore numerico dalla finestra principale
alle finestre aperte con ShellExecute. Qualcuno mi potrebbe chiarire
come operare nel modo piu' giusto ?

 come operare nel modo piu' giusto ?
Tenendo conto che questo e' un gruppo che parla di c standard,
il modo piu' giusto di operare e' che tu scegli il server di
news   
newsgroups.borland.com
e li scegli (tra i tanti) il gruppo di discussione che
riguarda piu' da vicino i tuoi problemi.
La lista dei gruppi di discussione Borland la trovi per esempio
in
http://newsgroups.borland.com
ciao,
g.

Newsgroup: it.comp.lang.c
Titolo: Problema sui file per neofita

 solo.
  Comunque non risolvi tutti i problemi di portabilita`. In particolare,
rimane aperto il problema della /endianity/, ossia l'ordine dei byte di
una parola.
  L'unico modo per scambiarsi dati in modo portabile e` usare i file di
testo, sperando che i meccanismi per il trasferimento di questi (per
esempio, l'FTP) siano in grado di gestire le eventuali differenze
(EBCDIC contro ASCII, CRLF contro LF o CR, etc.).
	Alla prossima,
		Marco

Newsgroup: it.comp.lang.c
Titolo: OT Ancora su Tanenbaum

Vorrei acquistare i suoi Libri!!! Mi avete convinto!!!
Sono interessato al libro sui sistemi operativi e quello sulle reti. E'
possibile avere informazioni su titoli e editore?
Grazie
P.S Ma Si trovano in libreria?
      Ma mica sono in Olandese?

 ha scritto nel messaggio
news:9glrok$gjp$2...@nreadB.inwind.it...

Al massimo li trovi in inglese!!!
Ma ci sono anche le traduzioni in italiano....dai un occhiata al sito della
Prentice Hall International che pubblica i suoi libri

 Grazie
Sistemi Operativi seconda edizione
Andrew S.Tanenbaum
Albert S.Wooldhull
Libreria UTET (Prentice Hall International)
ISBN 88-7750-424-2
Prezzo : 99.000
Alex



Ti specifico l'altro, quello sulle reti.
A. S. Tanenbaum
Reti di computer Sec ed. (ho questa ma non credo sia la piu'
recente....)
ISBN 88-256-0273-1
Prentice Hall International
Newsgroup: it.comp.lang.c
Titolo: ANSI C

Salve a tutti è la prima volta che scrivo in questo NG  :)
Volevo chiedervi subito una cortesia.
Si trova Online un manuale di ANSI C preferibilmente in formato PDF???
Tnx a lot.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Tnx a lot.
Puoi trovare Tricky C ma non è standard e svariati altri corsi online
che cmq IMO non sono completi/esaustivi.
Se accetti un consiglio spassionato, data anche la complessità del
linguaggio, farei riferimento a testi "rodati" come il Deitel & Deitel o
come qualcunoha detto la "bibbia": Linguaggio C di Kernighan e Ritchie
:)
Volendo puoi impararlo anche online magari sfruttnado l'ng ma la
soluzione ottimale è acquistare prima Deitel & Deitel ed eventualmente
poi il Kernighan & Ritchie ^^
Ciao
Nicholas


>Si trova Online un manuale di ANSI C preferibilmente in formato PDF???
Se ti serve solo tutto lo scibile sull'ansi C, lo puoi trovare su
http://www.gnu.org/manual/glibc-2.2.3/
in vari formati.
Non ti insegna a programmare, ma ti spiega tutto su ogni funzione
Ciao,
Riquito
Newsgroup: it.comp.lang.c
Titolo: Client e-mail!

Sto cercando il codice sorgente di un client e-mail, per poterlo studiare,
possibilmente in c :)
Sapreste indicarmi un qualche link da cui scaricarlo?
Grazie anticipatamente!

 Sapreste indicarmi un qualche link da cui scaricarlo?
http://www.mutt.org
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)                 [ 
http://www.emmanuelebassi.net
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

Newsgroup: it.comp.lang.c
Titolo: Strano comportamento della calloc

Come è possibile che alloco un array di long di 100 elementi con la calloc
ed in alcune posizione il valore non è inizializzato a zero?

 ed in alcune posizione il valore non è inizializzato a zero?
Non è possibile.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int i;
    long *a;
 
    a = calloc(100, sizeof *a);
 
    printf("a = {");
    for (i=0; i<100; i++)
    {
        printf("%ld,", a[i]);
    }
    printf("}\n");
    return 0;
}
output:
a =
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Ti giuro che mi accade :-(
"Andrea Laforgia" <x...@xx.xx> ha scritto nel messaggio
news:d8vgr4$972$1...@news.newsland.it...


 Ti giuro che mi accade :-(
E io ti giuro che, a meno di avere un compilatore bacato e/o non conforme
allo standard, NON è possibile.


 ed in alcune posizione il valore non è inizializzato a zero?
Non è possibile; invece è possibile che, per un errore di buffer overflow
oppure per un più semplice errore di identificazione della variabile,
qualche funzione scriva dei valori prima che tu li verifichi. Prova ad
anticipare la verifica il più possibile vicino all'allocazione e vedrai che
questa è corretta. Potresti anche usare un debugger chiedendogli di
segnalarti quando i valori incriminati vengono modificati.
Ciao.

Newsgroup: it.comp.lang.c
Titolo: printf e unsigned long

Utilizzo una funzione api che mi restituisce un tipo di dati unsigned long
Non riesco a trovare il modo per stamparlo correttamente con la printf
Momentaneamente, per vedere se funziona la procedura, faccio il casting di
questo valore in un float e poi lo stampo con la printf  %2.2f
perņ credo si perda dei dati...
Che specifica devo utilizzare per stampare con la printf questo tipo di dati
(unsigned long)?
Ciao e grazie in anticipo!!!


wrote:
prova con printf ("%lu", risultato);
ciao.

Newsgroup: it.comp.lang.c
Titolo: Lettura di una directory in C

Salve, ho un problema: devo creare un programma che mi permette, dato un
path inserito da riga di comando, di leggere tutti i file presenti in quella
cartella e di crearmi un file TXT con l'elenco di quei file (insomma quello
che succede con un ls > file.txt). Sapete se esiste una funzione in C che mi
permette di fare questo e sotto quale libreria si trova? Spero mi possiate
aiutare.
Grazie in anticipo
Simo



Quello che chiedi e' piattaforma-dipendente ...
Qual'e' il tuo ambiente? DOS? Linux? Windows?

 ha scritto nel messaggio
news:pan.2004.04.04....@none.it...

Teoricamente Linux, anche se il programma in se dovrebbe essere portabile
anche su windows (ma in quel caso me la posso cavare con un IF
condizionato).
Grazie

 condizionato).
piuttosto con un #ifdef, ma ad ogni modo dovresti cavartela se fai
chiamate posix (per lo meno con cygwin).
man opendir
f/up su it.comp.os.linux.developement
-- 
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
    - Brian W. Kernighan
Newsgroup: it.comp.lang.c
Titolo: migrazione programma da VB a C

Ciao a tutti, sono alle prime armi con C e vi chiedo gentilmente se
potete aiutarmi a migrare questo programma VB in C, vi sarei
eternamente grato, grazie!
Sub Main()
    Dim cont As Long
    Dim cont2 As Long
    Dim numpol As Long
    Dim numpolold As Long
    Dim currfrom As Long
    Dim currfromold As Long
    Dim currto As Long
    Dim currtoold As Long
    Dim validflag As Integer
    Dim validflagold As Integer
 
    Open "e:\ingsoft\rstr\test\file1.txt" For Input As #1
    Open "e:\ingsoft\rstr\test\file2.txt" For Output As #2
 
    Print #2, " chdrnum", " currfrom", " currto", " validflag", "
conteggio"
    Print #2, "------------------------------------------------------------------"
 
    cont = 0
    cont2 = 0
    Do Until EOF(1)
        Line Input #1, stringafile
        cont = cont + 1
 
        If numpolold = numpol Then
            If currto = 99999999 And validflag = 1 Then
                If currfrom <> currtoold Then
                    cont2 = cont2 + 1
                    Print #2, numpolold, currfromold, currtoold,
validflagold
                    Print #2, numpol, currfrom, currto, validflag,
cont2
                    Print #2,
"------------------------------------------------------------------"
                End If
            End If
        End If
 
        '
        ' old record
        '
        numpolold = numpol
        currfromold = currfrom
        currtoold = currto
        validflagold = validflag
 
        '
        ' new record
        '
        numpol = Mid(stringafile, 1, 8)
        currfrom = Mid(stringafile, 12, 8)
        currto = Mid(stringafile, 23, 8)
        validflag = Mid(stringafile, 34, 1)
 
    Loop
 
    Close #1
    Close #2
 
End Sub


Quali sono le istruzioni che non riesci a tradurre?
per aprire un file
fopen()
per scrivere in un file
fprintf()
per leggere da un file
fgets()
la funzione "substr = Mid(stringa, inizio, lunghezza)" si traduce con
qualcosa tipo
for (i=inizio, j=0; j<lunghezza; i++,j++) substr[j] = stringa[i];
substr[j] = '\0';
per chiudere un file
fclose();

 eternamente grato, grazie!
Quale e' il formato dei dati (il loro tipo e il modo in cui sono
memorizzati) contenuti in file1.txt?
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: Windos si - Linux no

Ho un programma semplicissimo:
----
#include <stdio.h>
#include <ctype.h>
int main (void)
{
int a;
printf("Immetti un valore per a: ");
a=getchar();
printf ("Il valore di a č: %d\n\n", a);
return 0;
}
---
Lo compilo, e sotto linux invece che darmi il carattere immesso mi da, 
per esempio, 51 al posto di 3 oppure 55 al posto di 7
Poi, in Linux cout e cin non vanno.
Dove sbaglio?
Grazie ciao.

 Poi, in Linux cout e cin non vanno.
cin e cout sono parte della libreria C++, non C (a meno di un vuoto di 
memoria ;-).
-- 
"Any sufficiently advanced technology is indistinguishable from magic."
                                                            Arthur C. Clarke

 
Quindi dovrei compilarlo su gcc con il .cc e me li prende?
Proverň, grazie.
Ciao

 
no, dovresti compilarlo con qualcosa del tipo
$ g++ provami.cpp
(.cpp e` l'estensione standard, ma g++ riconosce benissimo anche .C .cc .c++ .cp
.cxx)
non perche' gcc non riconosca il sorgente C++, quanto per il fatto che non va a
cercarsi gli #include nella STL.
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG

Newsgroup: it.comp.lang.c
Titolo: scrivere una libreria in C?

Salve a tutti. 
Ho questo problema: ho un programma scritto in C, e vorrei farlo
diventare una libreria...cioč associerei tale programma ad un'unica
funzione "functionInC()" e poi creerei una libreria .dll con la sola
funzione "functionInC()". E' possibile? E come si crea una libreria
.dll?
Grazie a tutti per qualsiasi aiuto!
massimiliano

 .dll?
Chiedere su it.comp.programmare.win32
qui e` OT.
-- 
RiK0
Non credo negli schemi non vincenti.
Newsgroup: it.comp.lang.c
Titolo: capire un tipo

Ciao
Ipotizzando una funzione tipo:
void foo(void* par)
{
	[....]
}
Come posso dentro a foo capire che tipo di puntatore mi e' stato passato ?
Grazie infinite
ciao

Giuseppe Tinaglia wrote:

In C puro non puoi. Quello e' un puntatore a un dato qualsiasi, e tra
l'altro il sizeof di *par e` 4, quindi non si puo`....
-- 
daniele_athome

 Come posso dentro a foo capire che tipo di puntatore mi e' stato passato ?
Puoi passare un ulteriore parametro che codifica il tipo in base
ai tuoi bisogni.
void foo(void *par, int tipo)
{
  if (tipo==0) {...}
  else  {....}
}
g.

Newsgroup: it.comp.lang.c
Titolo: Leggere una directory

Qual'e' il modo piu' corretto e portabile di leggere il contenuto di una
directory in C?
Grazie

 Qual'e' il modo piu' corretto e portabile di leggere il contenuto di una directory in C?
Mi sa che non esiste un modo portabile.
-julio di egidio
ju...@webzone.it
Newsgroup: it.comp.lang.c
Titolo: NoBody=TORE

Per chi ha avuto danni da costui e ha qualche soldo da spendere si puo'
rivolgere all'amministratore di server per risalire all'accont del
mittente...

 Perchč??????
Te lo posso dare io senza problemi...(o quasi).
NoBody
NoBody: Se lo conosci lo eviti, se lo conosci non ti uccide.

...


 wrote in message
YAQo4.111715$C3.11...@news.infostrada.it...


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

Gli operatori + - = && ... sono istruzioni?

mi spiego meglio...
x + a;      //e' un istruzione?
y++;    // e questa?
t=a*b;    // qui ci sono due istruzioni?


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.732 / Virus Database: 486 - Release Date: 29/07/2004

 > t=a*b;    // qui ci sono due istruzioni?       no, č un' unica
istruzione
"t=a*b" come un comando+espressione. L'espressione e' "a*b", il comando e'
l'assegnamento a "t".
Se invece si volesse intendere il termine istruzione come un comando o una
espressione, allora son tutte istruzioni
Ma la domanda originale, a che pro e' stata fatta?
Qual e' la definizione di "istruzione" di chi l'ha posta?
Ciao,
Ema

Newsgroup: it.comp.lang.c
Titolo: Problemi di compilazione

salve,
il mio problema e' il seguente..
sono in possesso del compilatore C/C++ borland 3.0 (dos)
nei programmi in cui scrivo codice in C o in C++ con alcune routine
scritte in Assembler il compilatore mi da errore perche' non trova
l'eseguibile
TASM.exe.
Quindi Come posso io risolvere questo problema ?
dove potrei trovare questo File ?
vi ringrazio per la vostra cortese Attenzione ciao.
                                           daniele
 
uc...@tin.it

TASM.exe.
Non hai installato il Turbo assembler, che e' un pacchetto a parte.
Non so se la versione 3.0 lo consenta, ma se elimini la direttiva #pregma
inline (qualora tu l' abbia utilizzata)
l' asm in linea viene assemblato dal basm (basic assembler), ma ripeto: non
so se la tua versione lo includa.


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

Dove posso trovare un compilatore DJGPP?
--
Posted from 
mta13-acc.tin.it
 [212.216.176.44]
via Mailgate.ORG Server - 
http://www.mailgate.org

 Dove posso trovare un compilatore DJGPP?
Se non sbaglio, non esiste _un_ compilatore DJGPP ma _il_ compilatore
DJGPP, e in questo caso lo trovi qui:
www.delorie.com
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

 Dove posso trovare un compilatore DJGPP?
http://www.delorie.com/djgpp
.
EMG
Newsgroup: it.comp.lang.c
Titolo: Controllo sugli interi!

Ciao a tutti
Vorrei sapere come avere il controllo sugli interi.... mi spiego meglio.
int a= 1235;
Come posso moltiplicare ogni singola cifra per un dato numero???
Ad esempio la seconda cifra (3)  per(*) il numero 6.
Aspetto vostre risposte... Ciao
***********************************************
Ah.......  Cosě va bene l' OGGETTO:? :-D

 Ad esempio la seconda cifra (3)  per(*) il numero 6.
puoi dividere il numero in decimali e poi moltiplicare ogni singolo decimale
per un numero ... e poi ricomporre l'int moltiplicando per la giusta decina
ogni numero scisso ...
per non uscire dagli int puoi usare la forma
a-((a%10)*10) = primo numero
in iterazione avresti
int a = 12345;
int b[20]; // contiene un uint da 64bit
for (int i=0;i<20;i++) b[i]=0;
for (int i=0;;i++) {
b[i] = a-((a%=10)*10);
 /*controlla qua se a diventa veramente un numero in meno e non sballa il
primo a, se cosi' fosse inverti %= e riprova */
if (a == 0) break;}
poi qua' moltiplichi ogni singolo b[] per il numero della tua posizione e
poi ricostruisci il numero (ti do l'algoritmo di ricostruzione come compito
:-p)
penso sia giusto prova, ah ricordati prima di salvare il segno del numero se
e' con segno
ciao

 Ad esempio la seconda cifra (3)  per(*) il numero 6.
per la penultima cifra: a%100/10, per la terzultima a%1000/100, ecc.
In generale per ottenere ogni singola cifra ti basta controllare il resto di
divisioni successive per 10.
Ad esempio, avendo
int a=1235;
per ottenere ogni singola cifra (5,3,2,1) puoi fare:
do printf("%d\n",a%10); while ((a/=10)!=0);
Ciao
-- 
No matter. Try again. Fail again. Fail better.

 ha scritto nel messaggio
news:bgka08$ic2$1...@news.ngi.it...
mi rispondo dasolo ... sara' il caldo ma mi sa' di aver cannato tutto ??? mi
date conferma ???
ciao

Newsgroup: it.comp.lang.c
Titolo: prendere uno o piu' caratteri senza il new line

perdonate la domanda forse banale..
per esempio..
se l'utente digita 'ab' (senza premere return subito dopo) come posso
richiamare una funzione?
la funzione scanf non restituisce il valore finche' non arriva un new line..
posso leggere un carattere alla volta senza attendere un new line
dall'utente? 

 Giovanni
linux
comunque non mi interessa particolarmente la portabilita'..

 dall'utente?
Non in modo standard.  La lettura dell'input, in C, č "bufferizzata".
Per intercettare la pressione di un tasto devi usare funzioni specifiche
di Linux.  Guarda la documentazione della libreria termcap.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

unknown ha scritto:

In modo standard no.
Sui sistemi Windows (VC) e Linux (GCC) dovrebbe esistere la funzione
getch().
--
Cingar


 comunque non mi interessa particolarmente la portabilita'..
E` necessario manipolare il terminale col ioctl().
# man tcgetattr e tcsetattr
Vedi l'esempio nel file allegato.


 Giovanni
grazie a tutti per le informazioni..
Newsgroup: it.comp.lang.c
Titolo: int8_t





Ciao :)


 


Come inizializzo una variabile di tipo int8_t 
cioè:


dato questo frammento di codice:


 


 int8_t num1=1,num2=150;


 printf("num1 e num2 valgono: %d %d \n",num1,num2);


 


 


mi stampa che num2 vale -106 mentre dovrebbe essere 150.


 


Cosa sbaglio?


 


Grazie per gli aiuti,


Poli



 
wrote in message 
news:EqyMh.19462$6.5...@tornado.fastwebnet.it
...


Newsgroup: it.comp.lang.c
Titolo: help: leggere dalla memoria?

Salve a tutti,
qualche buon frequentatore mi spiega, per cortesia, come posso
fare in C, sapendo che l'indirizzo della porta seriale
/dev/ttyS0 (in linux) č X, a leggere in quell'indirizzo?
Quand'anche vi riuscissi, quest'operazione mi servirebbe per
caso per poter monitorare tutto quanto viene inviato alla
seriale stessa?
Grazie - saluti ;)
Marco Zanon (powered by Linux Mandrake 7.1)
Coming soon: 
http://www.marcozanon.com
!

 (in linux) è X, a leggere in quell'indirizzo?
  Sei OT. I gruppi dedicati alla tua piattaforma ed ad Unix in generale
potranno esserti certamente di maggiore aiuto.
	Alla prossima,
		Marco

potranno esserti certamente di maggiore aiuto.
Marco, scusa, ma secondo me il manifesto andrebbe rivisto.
Non mi piace molto quell'ultimo "- I sistemi di sviluppo." che puo'
far pensare alla trattazione di particolari ambienti di sviluppo.
In queste circostanze, e' difficile capire cosa e' OT e cosa non lo
e'.
--
Andrea Laforgia (ICQ 87230455)
"A C program's trick is sometimes a C++ program's trap"
                                          [S.B.Lippman]

 potranno esserti certamente di maggiore aiuto.
frequento anche linux.development, ma pensavo che, più che una
questione riguardante linux, fosse un problema di C e gestione
della memoria, in generale...
chiedo scusa, saluti ;)



aggiungerei anche "portabilità".
Forse nel manifesto bisognerebbe dare una definizione precisa per ogni punto
in modo da fissare dei paletti entro cui muoversi.
Gianluca
-- 
================================================================================
TO REPLY
CHANGE 
NOS...@technologist.com
 IN ingv at 
technologist.com
"...Unix, MS-DOS, and Windows NT (also known as the 
    Good, the Bad, and the Ugly)."                     (by Matt Welsh)

in modo da fissare dei paletti entro cui muoversi.
Non credo sia necessario.
-- 
Andrea Laforgia (ICQ# 87230455) ---------------------------
Non scrivetemi in privato, se non richiesto espressamente.
No replies in private e-mail, unless explicitly requested.
----------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: differenza tra puntatori

Dato
int arr[4];
l'espressione arr+1-arr dovrebbe dare 1 oppure sizeof(int)?
-- 
Per l'e-mail rimuovere le maiuscole e gli underscore

 l'espressione arr+1-arr dovrebbe dare 1 oppure sizeof(int)?
Domanda interessante. Cito la bozza dello standard:
        6.5.6  Additive operators [...]
        Semantics [...]
        [#9]  When  two pointers are subtracted, both shall point to
        elements of the same array object,  or  one  past  the  last
        element of the array object; the result is the difference of
        the subscripts of the two array elements. [...] if  the
        expressions  P and Q point to, respectively, the i-th and j-
        th elements of an array object, the expression  (P)-(Q)  has
        the  value  i-j [...]
Nel tuo esempio: arr + 1 punta all'elemento 1 dell'array, arr punta 
all'elemento zero dell'array, si ha quindi 1 - 0 = 1.

 l'espressione arr+1-arr dovrebbe dare 1 oppure sizeof(int)?
1 (uno).
E mi sembra anche logico che sia così.

 all'elemento zero dell'array, si ha quindi 1 - 0 = 1.
Ok, grazie.


Newsgroup: it.comp.lang.c
Titolo: [PER ANDREA LA FORGIA]

Scusatemi se scrivo direttamente ad un "mito" di questo ng ma vorrei proprio
sapere.....
COME DIAVOLO POSSO FARE A SAPERE IL C COSě COME LO SAI TU????????
Complimenti davvero perchč ogni qualvolta ho postato un problema sei
riuscito a risolverlo
Ciao

1) Penso proprio che Laforgia vada attaccato!!!
2) Non ti conviene sapere bene il c come lui, senno sei obbligato dalla tua
coscenza a mettere il pelo nell'uovo in ogni minima cosa! ;) Scherzo
Dome

riuscito a risolverlo
Figurati, siamo qui apposta.
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

coscenza a mettere il pelo nell'uovo in ogni minima cosa! ;) Scherzo
Ma, caro Righel, e' per il bene dell'umanita'.


Newsgroup: it.comp.lang.c
Titolo: costante per i secondi

ciao a tutti
dovrei aggiornare un contatore ogni secondo esatto
esiste una funzione che generi una pausa di __esattamente__ un secondo (non
approssimato !!!)
tale funzione mi servrebbe per piattaforma linux
grazie, ciao

 tale funzione mi servrebbe per piattaforma linux
in modo portabile, puoi usare time() in un ciclo
/* codice non testato */
time_t start, stop;
time(&start);
stop = start;
for(;;) {
  while (time(&stop) == start) 
    ;
  start = stop;
  aggiorna();
}
su linux, puoi usare un thread separato che esegue una sleep(1) e poi 
fa l'aggiornamento, oppure SIGALRM, o ancora setitimer / getitimer
ma passa su it.comp.os.linux.development per i dettagli
Newsgroup: it.comp.lang.c
Titolo: CRC32

sto scrivendo una funzione per il calcolo del crc32. cosa c'è di 
sbagliato in questo codice?
#define CRC32POLY 0x04C11DB7 // CRC32
#define DWORD unsigned int
DWORD crc32(unsigned char *buffer, int length) {
    int i,j;
    DWORD temp=0;
    for(i=0;i<length;i++) {
       for (j=7;j>=0;j--) {
          if ((temp & 0x80000000) != 0) {
             temp <<=1;
             temp |= (buffer[i] >> j) & 0x00000001;
             temp ^= CRC32POLY;
          }
          else {
             temp <<=1;
             temp |= (buffer[i] >> j) & 0x00000001;
          }
       }
    }
    return temp;
}

 sbagliato in questo codice?
Magari dire se il problema e' che ti da un valore sbagliato, che il 
programma esce con errore, che il computer esplode o causa un collasso 
degli stati quantici sarebbe d'aiuto :-)
[detto questo, non ti ho aiutato perche'... beh, basta che guardi l'ora 
a cui ho postato ;P]
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

 a cui ho postato ;P]
Si scusa, ero un po' fuso... cmq, il problema è che la funzione da un 
valore errato. A me l'algoritmo pare corretto ma evidentemente non lo è :)
ciao.


mah. Il valore rispetto a cosa e' errato ?
Hai provato a confrontarlo con altri codici presenti
in rete ? Hai controllato se il valore di inizalizzazione
e' 0 o invece deve essere FFFFFFFF (tanto per dire) ?
Per esempio ho visto questo semplicissimo
http://remus.rutgers.edu/~rhoads/Code/crc-32b.c
che ha il vantaggio di precalcolare una tabella
per velocizzare le cose. Ma forse usa un polinomio diverso.
ciao,
g.

 per velocizzare le cose. Ma forse usa un polinomio diverso.
si il polinomio è diverso. Ho provato a sostituirlo e a far calcolare il 
crc della mia stringa di riferimento: il risultato non c'entra niente.
Grazie, ciao.

 ha scritto nel messaggio
news:ah4ed.71754$b5.34...@news3.tin.it...


 piů di un anno.
grazie, ma non capisco una cosa: quei passaggi di "riflessione" dei bit 
sono necessari?

 ha scritto nel messaggio
news:975ed.72024$b5.34...@news3.tin.it...


 if ((temp & 0x80000000) != 0) {
Come sopra: "0x80000000L".
Se gli "int" del tuo compilatore sono di 16 bit (come potrebbe essere, per
esempio, nei vecchi compilatori per DOS), queste sopra potrebbero essere le
cause dell'errore. In ogni caso, sono correzioni che è prudente fare.
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 cause dell'errore. In ogni caso, sono correzioni che è prudente fare.
correzioni apportate. cmq, gli int del mio compilatore sono a 32 bit.
purtroppo, gli errori persistono.
grazie, ciao.