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

Salve, ho fatto un piccolo programmino nel quale ho avuto la necessita'
di usare il dalay(); ebbene lo stesso comando sotto linux non esiste,
cosě ho rimediato facendo una piccola procedura di attesa che confronta
il tempo attuale con quello di attivazione della procedura piu' il
numero di secondi di attesa, ma cos' facendo il programma in esecuzione
praticamnete blocca il pc
Ebbene esiste una funzione come il dalay "universale" o come posso
costruire una procedura che non occupi sempre la cpu??
Grazie mille e scusate la lunghezza del post
Enrico D.

 costruire una procedura che non occupi sempre la cpu??
man 3 sleep
e` posix, almeno.  Non so se c'e` sotto altri sistemi.
-- 
David N. Welton
   Consulting: 
http://www.dedasys.com/
Free Software: 
http://people.debian.org/~davidw/
   Apache Tcl: 
http://tcl.apache.org/
     Personal: 
http://www.efn.org/~davidw/

 costruire una procedura che non occupi sempre la cpu??
se ti accontenti di una precisione al secondo, e non richiedi 
precisioni real-time, puoi usare time(), che e' standard e restituisce 
il numero di secondi a partire da una certa data.
potresti dunque scrivere
/* codice al volo */
#include <time.h>
void delay (int secondi) {
  time_t start, end;
  time(&start);
  do {
    time(&end);
  } while (end < (start + (time_t)secondi));
}
pero' occhio che questa procedura impegna molto il processore, a volte 
e' meglio usare gli #ifdef per usare funzioni tipiche dell'OS specifico 
racchiuse in una chiamata a funzione comune.

costruire una procedura che non occupi sempre la cpu??
Non esiste una funzione di attesa standard.  
Devi rifarti alle estensioni della tua piattaforma.
-- 
The Follet

 Ebbene esiste una funzione come il dalay "universale" o come posso
Temo non esista. Sui sistemi posix, pero', dovrebbe esserci sleep() che
fa lo stesso lavoro.
-- 
"Windows 95 is a 32-bit shell for a 16-bit extension to an 8-bit
operating system designed for a 4-bit microprocessor by a 2-bit
company that can't stand one bit of competition."
La mia (penosa, per ora) homepage: 
http://digilander.iol.it/burton666


Ma in questo modo potresti aspettare piů del dovuto , se ad esempio avvenga
un prerilascio del processo in fase di esecuzione subito dopo la chiamata a
time....no?
Fly

 la chiamata a time....no?
se per "prerilascio" intendi che lo scheduler ti mette da parte, in 
generale si, ma in una CPU ben gestita e non stressata, il ritardo e' 
di solito contenuto. Nota poi che neanche le chiamate dell'OS ti 
garantiscono una precisione assoluta in tal senso, per questo esistono 
i sistemi Real Time


wrote:
ho trovato:
/*************
* sleep.c -- provide unix style sleep function
*
*************/
#include <time.h>
int sleep(unsigned secs){
  long	start;
  long	check;
  long	finish;
  time(&start);
  finish = start + (long) secs;
  for (;;) {
	time(&check);
	if (check > finish)
		break;
	}
  return (0);
}

 }
e questo secondo te impiega poco la CPU? come gia' detto, si puo' avere 
una funzione portabile, ma non senza avere un ciclo come quello. Molto 
meglio confinare la parte OS dependent con #ifdef / #endif in una 
chiamata a funzione piu' generale
Newsgroup: it.comp.lang.c
Titolo: Progetto con + sorgenti.

Sto lavorando ad un programma che sta diventando grosso e quindi non molto
leggibile. Qualcuo mi saprebbe dire come posso generare l'eseguibile a
partire da un sorgente in cui metto il main() e una libreria tipo marco.h
(quando la fantasia abbonda!) in cui ci piazzo tutte le funzioni che ho
creato e che chiamo nel main()?
Il file header deve avere una struttura particolare?
Grazie a chiunque abbia un po' di tempo per rispondermi.
--
Marco Coppo - University Of Sheffield
Flat 12 Room 6 - Broad Lane Court
160 Broad Lane - Sheffield S1 4BU
South Yorkshire - UK

 wrote in message
801hul$j4k$1...@bignews.shef.ac.uk...


 wrote in message
8020l0$je1$1...@fe1.cs.interbusiness.it...


Ciao Marco Coppo
Prima regola del buon C-ista:-) Mai includere file con estensione .c
Seconda regola del buon C-ista:-) Metti le funzioni correlate in moduli
(leggi file) .c diversi e per ognuno crea l'opportuno .h contenente i
prototipi delle funzioni.
Terza regola del buon C-ista:-) Mai mettere definizioni di variabili nel .h;
solo dichiarazioni (vedi extern) e solo se necessario.
Quarta regola del buon C-ista:-) Usa un makefile per la compilazione di
tutti i tuoi moduli
Ciao :-)

 wrote in message
806ssj$2b9i$1...@stargate1.inet.it...

Newsgroup: it.comp.lang.c
Titolo: compressione di immagini

Ciao a tutti!
Ho un problema e spero che qualcuno mi possa aiutare... sto 
cercando l'implementazione dell'algoritmo per convertire 
un'immagine da bmp a jpeg (o un altro formato di compressione)
Non mi serve un'intera libreria, ma solamente un semplice 
esempio che implementi tale algoritmo. 
Qualunque aiuto mi possiate dare è ben accetto.
Grazie anticipatamente!
Ciao
Kenshirov
-- 
Postato da Alice Newsgroup: lo usi da web ma con le funzioni del newsreader 
http://newsgroup.alice.it
Gerarchie it, italia, it-alt, tin, it.binari. Unico!

 esempio che implementi tale algoritmo. 
L'algoritmo del jpeg non è una cosa banale. Il modo più semplice è usare 
la libreria libjpeg che fa eattamente quello. Leggere il formato bmp è 
invece (quasi) banale, puoi trovare facilmente in rete le specifiche del 
formato.
E.
Newsgroup: it.comp.lang.c
Titolo: Borland

Sto iniziando a studiare il C.
Ho trovato, in un CD-Rom di una rivista, Borland C++ Builder (V.1
completa) per Windows.
Credevo che fosse possibile utilizzare questo programma anche per gli
esercizi che ci sono nel manuale del C, salvando in ".C".
Tuttavia, questo programma mi pare abbastanza complicato, non ci capisco
nulla.
Insomma, qualcuno è disponibile a indicarmi quelle poche funzioni di
questo Borland che mi possa permettere di verificare gli esercizi da me
svolti?
Grazie in anticipo,
Giuseppe

...

Per utilizzare quel programma come il BC++ (...mi sembra...) devi  andare in
File - New... - selezionare modalita console.
analogamente puoi anche andare in project - options e selezionare modalita'
console.
... se invece di utlizzare un programma come quello, se devi imparare il C
puoi scaricarti un compilatore C piu' leggero.
al seguente indirizzo potrai trovare quello che fa per te':
http://www.tuttogratis.com/pages/programmazionec.html

 svolti?
Ciao Giuseppe.
Anche io ho trovato il compilatore Borland in una rivista e non credo
di averci capito più di te.
Quindi, chiedo scusa in anticipo per le eventuali cavolate che scriverò.
Ecco le istruzioni per eseguire il classico programmino "hallo World":
1) Avvia il programma e vai al menu' File  -> New.
2) Nella finestra che si aprirà (Menu Items) fai doppio click sull'icona
    "Console App".
3) Dovresti aprire così  una finestra (Project1.CPP) con alcune righe di
    codice preimpostato.
4) Dopo l'ultima riga che inizia con #include aggiungi la seguente:
          #include <dos.h>
  Più in basso immediatamente prima della riga con l'istruzione "return 0;"
  scrivi le seguenti  istruzioni:
        printf("hallo World");
        sleep(3);
5) nella barra dei menù seleziona "Run" -> "Run", oppure, nella barra dei
    pulsanti, premi il triangolino verde ed ecco compilato ed  eseguito il
    classico programmino in C.
Ciao.
Babylon.

In effetti funziona. Tuttavia mi pongo un problema. Mi pare che il
compilatore non lasci la possibilità di salvare il programmino in .c
Cioa, Giuseppe


Se ho capito bene vorresti salvare il sorgente con l'estensione
"nomefile.c",
devo dire di non esserci mai riuscito e non saprei se sia possibile.
Comunque, se servisse,  i sorgenti possono essere rinominati
cambiandone l'estensione da dos o da windows.
Il problema che mi sono posto invece è la dimensione degli
eseguibili generati che è enorme rispetto a quella ottenuta ad
esempio con un compilatore "C" come LCC:
- 120 Kb circa l'eseguibile generato da C++Builder
- 13 Kb circa lo stesso programma compilato con LCC
    Ciao.
     Babylon
Newsgroup: it.comp.lang.c
Titolo: Cercasi "maestro"

Salve a tutti.
Sono un ragazzo che conosce discretamente il linguaggio C ma vorrebbe 
affinare le sue tecniche di programmazione. Per favore se c'è qualcuno 
disposto a seguirmi e a consigliarmi (gratis) si faccia vivo. No ciarlatani 
perditempo o che non sanno nulla di programmazione. Preferibilmente 
qualcuno che programmi in ambiente GNU/Linux o Unix. Grazie.


Non per scoraggiarti in questa tua ricerca.... ma scommetto che a questa
richiesta d'aiuto risponderanno o si faranno avanti solo ciarlatani.
-- 
                    |   .-.
Gianluca Di Corato  |  : | :  I N  P E A C E  W E  T R U S T
   (aka sgrung)     |  '/|\'

Se hai bisogno di aiuto basta che posti le tue domande o perplessità e 
vedrai che poù di un maestro ti risponderà!!!!!
Fidati funziona!!!!
GRAZIE
<<SAX>>

Newsgroup: it.comp.lang.c
Titolo: Aiuto per i compiti

Cerco aiuto per i compiti e pago.
grazie,
Carlo

 Cerco aiuto per i compiti e pago.
100.000 all'ora va bene?
-- 
Nick Belane

Cerco aiuto per i compiti e pago.
Io sono bravo in geografia, posso aiutarti ?
--
Andrea Laforgia (mica uno qualunque...)

 Io sono bravo in geografia, posso aiutarti ?
ROTFL!!!
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: Inizializzazione array

Ciao,
è possibile inizializzare un'array di strutture avendolo dichiarato 
precedentemente?
Ho la necessità di inizializzare tale array in modo diverso, posso 
dichiararlo una sola volta e poi inizializzarlo a seconda dei casi 
oppure non è possibile ?
Spero di essere stato chiaro.
Grazie.

 precedentemente?
Si. Ma non risolve il tuo problema.
int a[2];  /* dichiarazione */
int a[2] = {1,2}; /* dichirazione con inizializzazione */
Una dichirazione con inizializzazione è una *definizione* ma due
definizioni di un oggetto non sono possibili.
-- 
Horst

Horst Kraemer ha scritto:

Ti ringrazio per la risposta, ma non mi ero spiegato bene.
Ora comunque ho risolto.
Grazie.
Newsgroup: it.comp.lang.c
Titolo: Chi mia aiuta pls... vi scongiuro

Ciao a tutti!
Devo fare un programmino per la scuola, ma non sio da che parte
incominciare. Nonmi nascondo: non so nulla di c.
Il testo del programma č questo:
============================================================================
==
Realizzare il programma Somma che riceve da input il nome di N file
contenenti degli interi e delle stringhe di caratteri alfabetici produca il
file risultato contenente le somme degli elementi di uguale posizione negli
N file: nel caso di stringhe alfabetiche l'intero corrispondente č la
lunghezza della stringa. Gli interi dei file piů lunghi che non hanno un
corrispondente intero nel file piů corto saranno scartati.
============================================================================
==
Non credo sia molto difficile, vi prego qualcuno molto gentilmente me lo
potrebbe fare? Vi scongiuro, vi supplico, vi imploro... thanks thanks
thanks....
fran...@everyday.com

 thanks....
beh... no, non dovrebbero esserci troppi problemi (spero di non parlare
troppo presto come al solito...) comunque se mi sai rispondere alle domande
posso provare ad abbozzarti qualcosa....sennò....non posso nemmeno
cominciare!
aspetto risposte,ok? :)
ciao ciao
*ANY*

 cominciare!
Sei davvero gentile, neanche mi conosci! se riesci a farlo ti ringrazio
davvero tantissimo, non saprò mai come ringraziarti... se poi posso
ricambiare il favore, lo faccio molto volentieri.
Ciao

L'email 
fran...@everyday.com
 è giusta? se si, valla a guardare che ti ho
spedito tutto il malloppo di roba a quella casella! Poi voglio i
ringraziamenti per il lavoro :P! CIAO!!
Any

Newsgroup: it.comp.lang.c
Titolo: Help-me!!

Ciao a tutti ragazzi!! Sono un novello programmatore di C, ma ho già avuto
esperienze di programmazione. Ora non vorrei essere lapidato per questa
domanda, ma ho bisogno di sapere questa cosa, perchè è un aspetto che mi
rimane oscuro: è possibile (e se si come) eseguire comandi DOS tramite un
mio programma? Mi spiego: come sarebbe il listato di un programma C
(eseguibile, *.exe) che nell'output visualizza le directory dell'HARD-DISK
(quindi usando, come ben sapete il comando dos DIR C:)?
Vi ringrazio fin da ora e perdonatemi se ho scritto una vaccata!!
Ciao

 (quindi usando, come ben sapete il comando dos DIR C:)?
Usi la funzione standard system() in cui inserisci la stringa con i comandi
da dare al SO. Nel tuo caso:
system("dir c:");
ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ del gruppo: 
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

(quindi usando, come ben sapete il comando dos DIR C:)?
#include <stdlib.h>
main()
{
    system( "dir" ) ;
}

 mio programma?
Si, guardati la funzione system().
EMG
Newsgroup: it.comp.lang.c
Titolo: il mio amico

Ciao a tutti!
Sto facendo un test sperimentale per collegare più mouse ad
un unico computer ed avere come movimento del puntatore la somma di tutti i
movimenti dei mouse.
Qualcuno sa qualcosa su come evitare che il Pc vada
in crash?
Un mio amico mi ha detto che modificando la routine in C è
possibile fare ciò.
Il mio amico è uno sparapalle?
--------------------------------
Inviato via 
http://usenet.iol.it

penso sia fattibile...
l'unica soluz che mi viene in mente è usando qlche linea di ASM...
fai un "detournement d'interruption" (in italiano non lo so... giramento di
interruzione?).
In pratica riscrivi le interruzioni che ti interessano...
se programmi sotto dos ho degli esempietti da darti...
Newsgroup: it.comp.lang.c
Titolo: array di puntatori a caratteri allocato dinamicamente

Ciao a tutti, avrei un problema...
Devo allocare dinamicamente un array di puntatori a stringa, dopo
averne richiesto la dimensione in input.Successivamento devo riempirlo
di stringhe, richiamando una funzione
void riempiArray(char* a[],int n)
come faccio ad allocarlo con una mallocin modo da poterlo passare alla
funzione?
Successivamente alloco anche le stringe da inserire tramite malloc,
come faccio a far puntare l'i-esimo puntatore dell'array alla stringa
appena allocata?
Vi ringrazio per l'aiuto, ciao
Roberto.

 appena allocata?
void riempiArray(char** pArrPP, int pArrDim)
{
   int idx = 0;
   char* tmpStrP = NULL;
   for(idx = 0; idx < pArrDim; idx++)
   {
      tmpStrP = malloc(stringDimension);
      if(NULL != tmpStrP)
         pArrPP[idx] = tmpStrP;
      else
      {
       // Gestisci l'errore
      }
   }
}
HTH
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


Eccoti un esempio funzionante:
#include <stdio.h>
#include <stdlib.h>
void RiempiArray( char *a[], int n )
{
    int i;
    for ( i = 0; i < n; ++i )
        sprintf( a[ i ], "Prova%d", i );
}
int main()
{
    const int NUMELEM = 10;
    const int LUNGSTR = 20;
    int i;
    char **a = malloc( NUMELEM * sizeof( char * ) );
    if ( !a )
    {
        printf( "Memoria insufficiente\n" );
        exit( 1 );
    }
    for ( i = 0; i < NUMELEM; ++i )
    {
        a[ i ] = malloc( LUNGSTR );
        if ( !a[ i ] )
        {
            printf( "Memoria insufficiente\n" );
            exit( 1 );
        }
    }
    RiempiArray( a, NUMELEM );
    for ( i = 0; i < NUMELEM; ++i )
        printf( "%s\n", a[ i ] );
    for ( i = 0; i < NUMELEM; ++i )
        free( a[ i ] );
    free( a );
    return 0;
}
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

Newsgroup: it.comp.lang.c
Titolo: Borland C++ Builder e "Thinking in C++"

Ho scaricato da internet il libro di Bruce Eckel "Thinking in C++" e
possiedo un compiler Borland C++ Builder 4.0 v. Standard. Perchè se provo a
scrivere nella finestra del C++ Builder adibita alla scrittura del codice i
codici dei programmi-esempio che sono riportati sul libro non danno luogo
ad un programma eseguibile? Cosa posso fare?
--------------------------------
Inviato via 
http://usenet.iol.it

 Inviato via 
http://usenet.iol.it
Dai il comando Make (oppure Build) dal Menů Project
HTH
Newsgroup: it.comp.lang.c
Titolo: Info

Dove posso trovare il Turbo  C ?

 wrote in message
8a600i$k3i$1...@lacerta.tiscalinet.it...


Newsgroup: it.comp.lang.c
Titolo: Alternativa a scanf

Salve a tutti, devo trovare una alternativa a scanf( %d)
per il fatto che  lascia nel buffer della
tastiera un \n di troppo , quando torna da una
funzione mi salta alla prima funzione che trova in
un menů di scelta.
So che si usa gets ma poi devo fare la conversione
da char a int , cosa si usa? itoa?
Grazie a tutti
Ciao

[...]
.. .ho trovato questo metodo su un sito:
 scanf("%*d"); prima di effettuare lo scanf vero e proprio
ma non funziona.
Ciao

 sscanf(buffer, "%d", &numero);
... ti ringrazio, ma va bene anche con gets?
devo solo acquisire un char , 1 solo,ma uno solo! :-)
 e poi strasformarlo in intero.
Ciao


Si, va bene anche gets() anche se e` deprecato perche` non controlla 
quanti caratteri legge nel buffer ed e` possibile mandare in crash il 
sistema con stringe molto lunghe.


[...]
... ti ringrazio .
Ciao

 tastiera un \n di troppo...[snip]
per il dovere di cronaca cito anche che puoi utilizzare la seguente
istruzione per eliminare il '\n' di troppo che trovi:
	while(getchar()!='\n');
che poi č meglio controllare anche l'EOF quindi qualcosa del genere:
int c;
..
scanf("%d",&numero);
while( ( c = getchar() ) != '\n' && c != EOF );  
Ciao
M`tic


 Ciao

per catturare il \n dopo un numero puoi usare anche:
scanf("%d%*c", &num);

[...]
cmq l'esempio riportato da Giovanni
non funziona.richiede sempre due invii per uscire
dalla funzione chiamata.
Ciao

   return 0;


[...]
...non sono d'accordo  . :-)
Ciao


Che compilatore e S.O usi?  Col gcc sotto linux basta 1 invio.


 Giovanni
... uso djgpp con windows.
Ciao


Non lo ho mai usato ma se devi davvero dare 2 invii e` sbagliato.
Ma credo più probabile che sbagli qualcosa tu !!!
Serve solo un invio per terminare fgets() (oppure gets().)


[...]
... va bene , grazie.
Ciao
Newsgroup: it.comp.lang.c
Titolo: unsigned int

sapete dirmi perchč questo assegnamento mi genera un errore (costante troppo
grande)?? Gli unsigned int non dovrebbero arrivare fino a 429496..ecc ecc???
unsigned int limit=4000000000;
Grazie

 sapete dirmi perchè questo assegnamento mi genera un errore (costante

Prova a fare "int size = sizeof(unsigned)" sul tuo sistema.
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Ciao, Bizio!
Il giorno 10/07/2004 alle ore 11:07 hai scritto:
 B> sapete dirmi perchč questo assegnamento mi genera un errore (costante
 B> troppo grande)?? Gli unsigned int non dovrebbero arrivare fino a
 B> 429496..ecc ecc??? unsigned int limit=4000000000;
Aggiungi una U in fondo al numero.
unsigned int limit=4000000000U;
Bye
-- 
There is no death; There is the Force.
http://www.maccasoft.com

 Grazie
Anche se, al 99%, il suggerimento giusto ti e' gia' stato dato (quello 
della 'U' finale al numero), volevo ricordarti che non c'e' scritto da 
nessuna parte che (unsigned) int sia un numero a 32 bit. Semplicemente, 
tu sai che sizeof(char)=1, e che sizeof(char) <= sizeof(short) <= 
sizeof(int) <= sizeof(long int) (se non ho sbagliato qlc qui in mezzo).
Saluti!
-- 
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

 grande)?? Gli unsigned int non dovrebbero arrivare fino a
429496..ecc ecc???
No, non dovrebbero.
Lo standard prevede che un "unsigned int" abbia dimensione dipendente
dalla macchina.
Su che computer stai lavorando ?

 > sapete dirmi perchè questo assegnamento mi genera un errore


...

Newsgroup: it.comp.lang.c
Titolo: allegro

Ho sentito parlare della libreria allegro.
Qulalcuno sa spiegarmi come installarla, come usarla, e quali istruzioni
contiene.
Grazie
ludo...@libero.it
-- 
Posted from 
smtp2.libero.it
 [193.70.192.52] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:000501bcd4f3$a5e4ada0$70a61497@v1o0o8...


> ma non č fornita con il compilatore DJGPP?
NO!
Devi scricartela a parte dezipparla e poi lanciare il comando make nella
directory dove l'hai dezippata....it's all!
Newsgroup: it.comp.lang.c
Titolo: strtcmp

cari amici,ho il grosso problema con lo STRCMP non riesco a fare il
confronto fra 2 stringhe provenienti da 2 diversi file...eppure le due
stringhe vengono lette bene visto che le ho controllate col printf.non č
neanchwe un problema di ricerc dicotomica,possibile che lo strcmp non
funziona?eppure non ci sono errori di forma!cosa puo essere?
--------------------------------
Inviato via 
http://usenet.libero.it

 cosa puo essere?
un errore nel programma?
-- 
iAN CooG - ANTIFAN #1 di Simone Crisari
Judgement day the second coming arrives
Before you see the light, you must die!
(South of heaven) (Slayer Gig count: 5)

 stringhe vengono lette bene visto che le ho controllate col printf.non è
Posta il codice. Sicuramente, comunque, è un errore tuo!
Newsgroup: it.comp.lang.c
Titolo: check_day function

Salve a tutti,
preso dall'euforia di aver quasi finito il mio monitor di ip, questa
notte ho fatto le ore piccole per terminare il mio programma, ma si sa
il sonno fa strani scherzi :)))) Probabilmente il mio cervello ha fatto
tilt; comunque vi prego di controllare l'enorme str@#@#onzata che ho
scritto.
Allora nel mio prog. ad un certo punto devo controllare se cambia la
data, cosi' appena inizia il programma metto in una bella variabile la
data di inizio e poi controllo se e' trascorso un giorno in modo da
stampare determinati report......se non che' la mia funzione di check
della data fa un po' acqua (e' solo un eufemismo), comunque ho riscritto
la funzione con un esempio semplificato che fa una prova sui secondi...
Mentre la debuggavo ho notato che mi restituisce sempre lo stesso valore
per la data iniziale e per la data di test che uso per la comparazione.
char	check_day_changed(time_t *oggi)
{
	struct tm	*ptm, *ptm1;
	time_t		tost;
 
  	time(&tost);
	ptm  = gmtime(&tost);
	ptm1 = gmtime(oggi);
	printf("DATA OGGI: 	%d	\n",ptm1->tm_sec);
	printf("DATA TEST: 	%d	\n",ptm->tm_sec);
	return(TRUE);
}
main()
{
	time_t	oggisec;
 
	time(&oggisec);
	for (;;)
		check_day_changed(&oggisec);
}
Grazie a tutti per la collaborazione
P.S.
	compilo con un solaris 2.6(intel) con compilatori Sun
Bye,Bye
	Dralbert

 	printf("DATA TEST: 	%d	\n",ptm->tm_sec);
Riscrivila come:
       ptm = gmtime(oggi);
       printf("DATA OGGI:      %d      \n", ptm->tm_sec);
       ptm = gmtime(&tost);
       printf("DATA TEST:      %d      \n", ptm->tm_sec);
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

         ptm1 = gmtime(oggi);
La funzione gmtime() utilizza una struttura statica che viene
sovrascritta ad ogni chiamata.
EMG

         return(TRUE);
                 ^^^^
Sei sicuro che si possa fare?
Luca.
-- 
*******************************************************
  "C'e' un vecchio detto a riguardo delle reti che    
  recita: i problemi di banda possono essere risolti  
  con il denaro. I problemi di latenza sono piu' dif- 
  ficili poiche' la velocita' della luce e' una cos-  
  tante e non e' possibile corrompere Dio."           
 
                                     David Clark, MIT 
  Reply to 
bia...@maganet.net
*******************************************************

         ptm1 = gmtime(oggi);
gmtime restituisce un puntatore ad una struttura allocata staticamente.
Questo significa che ptm e ptm1 puntano allo stesso oggetto... che
cambia il contenuto ad ogni chiamata.
Dopo ogni chiamata di gmtime DEVI salvarti il contenuto della struttura
da qualche parte:
struct tm       *ptm, prima, dopo;
ptm  = gmtime(&tost);
memcpy(&prima, ptm, sizeof(tm));
ptm = gmtime(oggi);
memcpy(&dopo, ptm, sizeof(tm));
Newsgroup: it.comp.lang.c
Titolo: Estrarre caratteri da stringa

Ciao a tutti,
sto studiando il C, e ho un problema che non riesco a risolvere. Dato
un testo, devo trovare tute le occorrenze di caratteri ' m ' seguiti
da ' a ' ; Mediante una stringa di controllo fscanf (file, %[ra],
stringa)  inserita in un ciclo while riesco ad estrarre qualche cosa,
ma il problema e' che non appena viene trovata un' occorrenza, il
ciclo passa alla stringa successiva, trascurando eventuali altre
occorrenze che dovessero verificarsi nella stessa stringa. Cosi se nel
testo si trovano i.e. "ma ma", il programma trova due occorrenze, ma
se incontra " mama ma" ne trova sempre due, visto che al primo "ma"
che trova passa alla stringa successiva.
grazie per l' aiuto, Marcello


Ti conviene leggere una riga alla volta ed esaminare le righe in memoria.
E.

 E.
Ciao, grazie per la risposta. E' quello che sto facendo, ma la mia
difficolta' sta proprio nel trovare quando una ' m' e' immediatamente
seguente un 'a '

 immediatamente seguente un 'a '
Forse prima dovresti imparare a scrivere correttamente. ' m' e 'a ' (o 
' a ' ed ' m ' nel primo post) non spiegano cosa vuoi fare.
Io ho capito che vuoi trovare la sequenza di caratteri 'a' ed 'm' 
(ovvero la stringa "am") e ti posto un semplicissimo programma che 
come ti hanno consigliato lavora per linea.
#include <stdio.h>
int main(int argc, char **argv)
{
   char buffer[1024];
   FILE *stream;
   char *str;
   int ch, count = 0;
   stream = fopen(argv[1], "r");
   while ((str = fgets(buffer, sizeof(buffer), stream)) != NULL) {
         while ((ch = *(str++)) != '\0') {
                 if (ch == 'm' && *str == 'a') count += 1;
         }
   }
   printf("la sequenza \"ma\" appare %d volte\n", count);
   return 0;
}
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 da ' a ' ; 
Quello che puoi fare è costruire una macchina a stati:
Stato 0: se in input c'è una 'm' vai allo stato 1;
         in tutti gli altri casi resti in stato 0;
Stato 1: se in input c'è una 'a', conteggi e torni allo stato 0;
         se in input c'è una 'm', resti in stato 1;
         in tutti gli altri casi torni allo stato 0;
Banalmente in C si scriverebbe così:
int ma_count(const char *s) {
    int i=0, state = 0, count = 0;
    if (s) {
      while (s[i] != '


Ad esempio:
char *s;
int i;
s="mama ma";
char *p=strchr(s,"ma");
// p punta alla prima occorrenza di "ma" all'interno di s.
if (p) {
    p=strchr(p+1,"ma");
// ora p punta alla seconda occorrenza di "ma" all'interno di s
}
//E.
Newsgroup: it.comp.lang.c
Titolo: Da novellino C e C++

Salve. Chiedo scusa per il crosspost, ma seguo solo da qualche giorno
entrambi i NG e non ho le idee chiare su quale dei due sia piu'
pertinente per i miei problemi.
Sono un biologo e finora scritto dei programmi personali, alcuni dei
quali anche complessi, con Clipper 5.2. Ho sempre ritenuto quel
programma ottimo, soprattutto per la gestione dei database. Vorrei
imparare a programmare il C, di cui ho appreso i rudimenti attraverso
lo studio degli Elementi di programmazione di H.Schildt, McGraw-Hill,
1991 (quello di cui su it.comp.lang.c si e' detto peste e corna in
questi giorni) e un corso per il C della Jackson uscito anni fa nelle
edicole. Sempre attraverso le edicole qualche anno fa avevo anche
acquistato anche un corso di informatica della De Agostini al quale
erano associati anche alcuni programmi completi di licenza d'uso. Con
sorpresa ho visto che il "Turbo C" della Borland, associato a quel
corso, e' in realta' un "Turbo C++" versione 1.01.
Per capirci qualcosa di piu' ho acquistato il testo "Da C a C++" di
Greg Perry, Mondadori, 1995, che ho cominciato da poco a leggere; ma
da tutte queste letture affrettate e forse maldigerite sono nati
alcuni dubbi. Non ho capito, ad es., se la versione di C++ in mio
possesso sia o meno conforme allo standard AT&T. Non ho capito se
questo mio TC++ possa creare dei problemi per programma scritti in
puro C (chiedo scusa se l'espressione non dovesse essere corretta).
Soprattutto non so cosa mi convenga fare: iniziare lo studio del C++
saltando la tappa intermedia di perfezionamento del C, oppure
approfondire la conoscenza del C (in questo momento molto elementare e
carente) prima di passare al C++? Mi conviene comprare una versione
recente di questi linguaggi, oppure posso tranquillamente utilizzare
quella che ho (fra l'altro le mie attuali disponibilita' economiche
non sono eccessive)?
Grazie
Alex
Sent via Deja.com 
http://www.deja.com/
Before you buy.

non sono eccessive)?
Ci sono diversi compilatori free molto aggiornati... vedi sopra.
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

 Clipper e` ormai considerato morto dalla stessa casa produttrice (la
Io suggerirei anche Visual FoxPro.
Lo uso da anni (da quando è uscito windows 3.1) per la programmazione su
basi di dati sotto windows e mi sono trovato benissimo. Tra l'altro per chi
viene da linguaggi xbase non è molto difficile, e dalla versione 3.0
esistono anche gli oggetti, anche se molto più "à la VB". L'unica cosa di
cui si sente pesantemente la mancanza sono i code-block :-)
Ciao
--
Alessandro Monti
Newsgroup: it.comp.lang.c
Titolo: reperire immagini

sto cercando di scrivere un gioco del poker... credevo fosse facile trovare
in rete le immagini delle varie carte
non ho trovato altro che siti dove vendevano carte da gioco, o ti davano da
scaricare chissa' quale EXE per giocare su chissa quale Server
insomma... e' cosi' difficile trovare l'immagine che cerchiamo, o sono io
che sbaglio qualcosa?

 in rete le immagini delle varie carte
hai provato a cercare con i motori di ricerca la parola "clip art"?
prova anche a cercare nelle categorie "interne" dei motori
es 
yahoo.it
, clicca su una categoria tipo immagini o simili...
E comunque fai bene a lasciar perdere gli exe, poi magari ti collegano in
australia...
ciao
Newsgroup: it.comp.lang.c
Titolo: programmi per calcolatrici?

Ciao a tutti... ho letto da qualche parte che alla Texas
Instruments,anni fa,facevano i programmi per le loro calcolatrici in
Fortran,inoltre ho letto un manuale di C++ dove si asserisce che si
possono programmare i circuti di controllo di elettrodomestici come,per
esempio,i forni a microonde,in C++...
Ora..vorrei sapere come cio' sia possibile.percaso esistono dei
programmi che tramutano il codice oggetto prodotto da un compilatore
come ,appunto quello del C++ in codice binario adatto per altri tipi di
processori usati per applicazioni come quelle che ho menzionato?...
Spero di essermi spiegato bene...
Questa che ho espresso è una mia curiosita'..mi piacerebbe discuterne
con qualcuno...

processori usati per applicazioni come quelle che ho menzionato?...
non vedo il mistero. se tu hai un compilatore gli puoi fare generare
il codice per qualsiasi CPU esistente. ad esempio esistono compilatori
C per alpha,motorola, PPC e tutto il resto.
Ad esempio il compilatore GNU gcc e` disponibile coi sorgenti, ed e`
composto da una parte che legge il file .C, e la trasforma in una
struttura dati indipendente dalla CPU. poi basta scrivere un driver
che trasformi questa struttura in istruzioni reali per la CPU che
vuoi. In questo se ad esempio scrivi il driver per 386, il compilatore
genera codice per 386, MA il codicedel compilatore lo puoi compilare
su qualsiasi altra CPU, ad esempio alpha. cosi` avresti un compilatore
su alpha che genera file eseguibili solo su 386. per fare quake mi
sembra abbiano fatto cosi`.
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343
http://members.tripod.com/%7Eranger_rg/

 
http://members.tripod.com/%7Eranger_rg/
Ho capito..grazie della risposta..se permetti,pero',vorrei chiederti
dell'altro...se io volessi costruire (a parte che non ne sarei
capace,pero' sono curioso) un circuito elettronico,controllato da
microprocessore,che controlli,per riprendere l'esempio che ho fatto,un
elettrodomestico come potrebbe essere un forno a microonde,utilizzerei
un processore molto meno potente di un 386,o di un Digital,vero?...e per
un processore di questo tipo,esistono dei compilatori c,c++ o altro, o
comunque dei programmi che tramutano il sorgente o il codice oggetto di
un 80x86 ,in un codice oggetto a lui adatto?...inoltre...dov'e' che
posso trovare delle informazioni su dei circuiti tali?....
Spero di non esser stato noioso...grazie anticipatamente,
 
Alberto.
Newsgroup: it.comp.lang.c
Titolo: delucidazioni principiante

ciao
dal libro Linguaggio C seconda edizione
l'autore dice...se avete problemi chiedete agli esperti!
e voi siete gli esperti :)
1)il range che le variabili INT e FLOAT possono assumere dipende dalla
macchina,potete trovare interi a 16 bit o 32....
mi fate un esempio concreto?
2)un numero FLOAT e' una quantita'  a 32 bit con almeno 6 bit significativi
un esempio anche qui'...
3)La divisione fra interi effettua un troncamento....
che vor di'?
p.s. per studiare la programmazine in C bisogna avere particolari conoscenze
matematiche?
se si di che tipo?
grazie e buon lavoro a tutti

se si di che tipo?
Questo non vale solo per il C, ma per qualunque linguaggio di
programmazione.
Diciamo che dovresti conoscere i rudimenti dell'algebra (per es il
concetto di complemento a 1) e della logica (ti bastano AND, OR, NOT,
XOR... con relative tabelle di verita').
Giusto per citarti qualcosa che ti puo' tornare utile c'e' il teorema
di DeMorgan (si usa per semplificare espressioni complesse):
!A and !B  ==  !(A or B)
!A or !B   ==  !(A and B)
Se poi sapessi anche derivare [1] le espressioni logiche potresti
avere delle invarianti di ciclo [2] comprensibili :)
[1] derivare: operazione logica che permette di passare da
un'espressione ad un altra equivalente e corretta, con un processo
valido (questo processo viene definito completo proprio perche'
mantiene la correttezza dell'espressione)
[2] invariante di ciclo: difficilissima da definire e da identificare,
il terrore di ogni studente di programmazione 1 :P  E' la condizione
che controlla un determinato ciclo, ovvero finche' la condizione e'
vera (si parla in termini di logica) si continua ad eseguire le
istruzioni del ciclo, quando la condizione non e' piu' vera si smette
di eseguire il ciclo.
Esistono infinite invarianti di ciclo equivalenti, proprio perche'
esistono infinite forme logiche equivalenti... piu' e' semplice piu'
sara' comprensibile :)
-- 
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."

 ha scritto nel messaggio ."
grazie!
--
Zufolando nel circuito y di rigore....

 3)La divisione fra interi effettua un troncamento....
Se devi dividere 3 per 2, il risultato è 1.5. Quando fai una divisione fra
numeri interi il risultato è soltanto 1; viene cioè troncata la parte
decimale.
Maurizio.

grazie a tutti!
Newsgroup: it.comp.lang.c
Titolo: Leggere Matrici

Come faccio a leggere una matrice da file di testo senza conoscere
ledimensioni??

 ha scritto nel messaggio
news:8hovni$f1l$1...@news.IT.net...


Newsgroup: it.comp.lang.c
Titolo: Newbie: leggere bytes da file

Qualcuno può dirmi come devo aprire un file e che funzioni devo usare
per leggere bytes in modo da poter fare confronti tipo :
if ( byte_letto == 0xb3 ) ...
Grazie
--
Mav Rossi

if ( byte_letto == 0xb3 ) ...
int main() 
{
    FILE *fp ;
    int c ;
    fp = fopen ( "miofile.est", "rb" ) ;
    while ( c = getc ( fp ) )
          if ( c == '0xb3' )
          {
             ...
          }
    fclose ( fp ) ;
 
    return 0 ;
}
Ovviamente, aggiungi i controlli d'errore...

 if ( byte_letto == 0xb3 ) ...
int c;
while ( ( c = getc( fp ) ) != EOF )
{
    if ( c == 0xb3 ) ...
    ...
}
EMG
Newsgroup: it.comp.lang.c
Titolo: carattere minuscolo-maiuscolo

sto implentando una funzione che cerca una stringa all'interno di un'altra
e non tenga conto se una lettera è maiuscola o minuscola. Come posso
convertire una lettera da maiuscolo a minuscolo e viceversa?devo
utilizzare per forza il codice asci?



toupper
tolower

Perche' non provi con le fuzioni:
toupper(); tolower()?
"Andrea B" <andreaaz@NoSpam_freemail.it> ha scritto nel messaggio
news:pan.2004.02.25.11.34.52.894465@NoSpam_freemail.it...

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.592 / Virus Database: 375 - Release Date: 18/02/2004

Entrambe le prime due persone che ti hanno risposto hanno perfettamente
ragione. toupper e tolower sono la chiave. Ma allora perchč ti rispondo
anch'io? Per segnalarti che questo due utilissime funzioni hanno come
parametro in ingresso un int, e tu al 95% usi una char* che molto spesso č
signed. Quindi prima di passare un carattere a queste due funzioni, castalo
a unsigned char. Cosě:
char *str = "Pippo";
for (char *p = str; p != 0; p++) {
 tolower((unsigned char)p); // QUESTO E' QUELLO CHE TI VOLEVO SPIEGARE!
}
Se vuoi fare il figo e convertire le lettere accentate da minuscole a
maiuscole... Beh! Questa funzione non lo fa, di base... Perchč il set ASCII
a 7 bits non ha lettere accentate :-)
Comunque (non ne sono sicurissimo) prova a guardare setlocale. Imponendo il
locale a quello del paese corrente puoi farlo (occhio che rallenta un
pelino).
--- bye
Newsgroup: it.comp.lang.c
Titolo: Arrgh! Returning an array of strings

I'm going to take a deep breath before I write this, because I am at wits
end.
Every few months I decide to have another go at C. I get the dozen or so
textbooks out of the cupboard and start by trying to write something simple.
You'd think I'd have given up now... its been 4 years since I did it and uni
and I still keep trying.
This time I tried to write a function that takes a string and a delimeter
and returns an array split up by the delimeter. Exactly the same in function
to perls split function.
I have tried EVERYTHING under the sun. Can anyone tell me WHY oh WHY
documented examples NEVER have the examples you want. I never never in all
my time seen a decent example of how to return an array of strings. People
discuss it, and then when it comes time to give an example, they return an
array of integers or something else equally useless.
I'm not even going to bother putting down what I have tried because it would
just take up too much space.
Would someone out of the kindess of their soul be able to give a framework
of a function which returns an array of strings.
eg:
int split ( char *a[5] ) {
}
main ( void ) {
    split ... whatever
}
This is obviously vastly lacking.
Any help to the newsgroup or to email, 
dgar...@nsw.bigpond.net.au
 would be
very much appreciated.
Regards
Douglas
-- 
comp.lang.c.moderated - 
cl...@plethora.net

 This is obviously vastly lacking.
What exactly you want to do?
Can you write it down in plain English?
I will help you translate into C language.
Luke Liu
pac...@cwix.com
-- 
comp.lang.c.moderated - 
cl...@plethora.net

Newsgroup: it.comp.lang.c
Titolo: rand()

ciao,vorrei sapere se qualcuno conosce bene questa funzione,č un fondamento
per il mio codice,ma alla fine mi da sempre gli stessi valori,e che random
č?


Devi cambiare il seme prima di cominciare ad usare rand se vuoi ottenere 
veri numeri (pseudo)casuali. Un valore adatto e` il "calendar time". Ad 
esempio:
#include <stdlib.h>
#include <time.h>
int main(void)
{
     srand(time(NULL));
     /* ora rand produrra` valori diversi ad ogni esecuzione */
     /* ... */
}



uff mi rubi sempre i "clienti" :P auauuauzu vabbeh vabbhe mi rifarň
prima o poi gh :)
PS: sono OT forse :P
Newsgroup: it.comp.lang.c
Titolo: Ancora scanf() con le char

Ciao all,
questa volta si tratta di una curiosità riguardo le char:
main(void)
{
int choice;
char chr;
 choice = get_option();
 if (choice ==  1)
   { printf("\nDammi un carattere: ");
      scanf("%c", &chr);
     printf("\nHai scelto il carattere %c\n", chr);
   }
non funziona. Mentre se la metto come stringa:
main(void)
{
int choice;
char str[1];
 choice = get_option();
 if (choice ==  1)
   { printf("\nDammi un carattere: ");
      scanf("%s", &str);
     printf("\nHai scelto il carattere %s\n", str);
   }
...funziona!
perchè?? .. eppure posso impostare un solo carattere con l'elemento "%c"
!
Un'altra cosa....  se creo un'arrey di soli 5 elementi per una stringa,
perchè posso digitarne (senza errori) molti di più al momento
dell'esecuzione del prog??
thz

 dell'esecuzione del prog??
Perché non c'è nessun legame tra la dimensione di un array e il
meccanismo di input dei dati. In poche parole, lo stream non può sapere
che tu vuoi solo 5 caratteri e continua ad attendere input fino a che
non premi INVIO. Il C standard, per essere portabile, offre un sistema
di I/O molto rudimentale.
EMG
Newsgroup: it.comp.lang.c
Titolo: URGENTE:Come far restituire ad una funzione una stringa di caratteri!!

Ho un problema con questa funzione che deve eliminarmi da un file testo 
tutte le parole con le lettere  a con la funzione sprintf riesco a 
memorizzare le parole nel vettore s. il mio problema è riuscire a portare 
fuori dal ciclo while il nuovo testo senza a perchè poi dovrei salvarlo in 
un file.insomma vorrei che la funzione restituisse il nuovo testo.
NB:testoPtr è il vettore che contiene i paragrafi.
stringPtr è la stringa che contiene il testo originale letto da file.
void elimina_a( char **testoPtr2)
{
     int j=0,parola=0,parag;
     char *tokenPtr,*vettPtr,*stringPtr2,*string= ". ?!,:",s[20];
     FILE*cfPtr2;
        stringPtr2=leggifile(cfPtr2,stringPtr2);
        parag=contaparagrafi(stringPtr2);
         for(j=0;j<=parag;j++)
         {
                tokenPtr=(char *)strtok(testoPtr2[j],string);
                while (tokenPtr!=NULL)
                {
                      if((!strchr(tokenPtr,'a'))&&(!strchr(tokenPtr,'A')))
                      {
                      vettPtr=tokenPtr ;
                      sprintf (s,"%s " ,vettPtr);
                       printf("%s",s);
                      }
                tokenPtr=(char*)strtok(NULL,string);
                }
                printf("\n");
         }
              //printf("%s",s);
 }

 tutte le parole con le lettere  a [...]
Procedimento troppo complicato (oltretutto fai uso di strtok() che 
andrebbe evitata).  Se vuoi filtrare del testo, uno dei migliori 
meccanismi č quello degli automi deterministici.  Il tuo caso č molto 
banale, devi gestire solo due stati, uno per i caratteri separatori e 
uno per i non separatori.
stato | carattere  | azioni
--------------------------------------------------------------
   0   | separatore | 1. scrivi il separatore
       |            | 2. passa allo stato 1
--------------------------------------------------------------
   0   | non sep.   | 1. memorizza il carattere in un buffer
       |            | 2. passa allo stato 1
--------------------------------------------------------------
   1   | separatore | 1. la parola memorizzata nel buffer contiene 'a' ?
       |            |    se sě, allora:
       |            |           1a) scrivi il separatore
       |            |           1b) passa allo stato 0
       |            |    se no, allora:
       |            |           1c) scrivi la parola
       |            |           1d) svuota il buffer
       |            |           1e) scrivi il separatore
--------------------------------------------------------------
   1   | non sep.   | 1. memorizza il carattere in coda al buffer
--------------------------------------------------------------
Ovviamente, in ogni stato EOF vale come separatore, ma altrettanto 
ovviamente non va scritto in output.
Newsgroup: it.comp.lang.c
Titolo: Domanda per Super Esperti !!!

Come mai se scrivo...
-------------
int x=0;
printf ("\n%d %d %d",x++,x++,x++);
-------------
il mio pc invece di visualizzarmi 0 1 2
mi visualizza 2 1 0 ???
Grazie By Carlo

mi visualizza 2 1 0 ???
Perche', in C, normalmente, i parametri vengono passati
nello stack delle funzioni nell'ordine inverso a quello in
cui vengono scritti.
Quindi, il sistema esegue prima quello che appare come
ultimo incremento, poi il secondo, poi il primo.
In ogni caso, il comportamento di codice come quello e'
indefinito.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)

Newsgroup: it.comp.lang.c
Titolo: aiuto con <time.h>

Ciao a tutti.
Ho un piccolo problema : mi è stato chiesto di "studiare" la libreria
<time.h>, per capire come lavorano le funzioni presenti in essa e poi
spiegarle ad una classe intera.
Io ho provato a guardarla, ma non riesco a capire come lavorano le sue
funzioni, ho provato a cercare su internet, ma non ho trovato nulla
che potesse fare chiarezza. Non sono serviti nemmeno i vari help in
linea dei compilatori. Qualcuno conosce un sito dove poter trovare
spiegazioni chiare di quelle funzioni?

 spiegazioni chiare di quelle funzioni?
 
http://www.dinkumware.com/manuals/reader.aspx?b=c/&h=time.html

 wrote

Studiando il file time.h non credo che potrai capire molto.
Prova a studiare un manuale o a fare ricerca su internet.
Le funzioni in time.h sono molto semplici, si tratta di trovare il materiale
giusto su cui studiare.
Se usi google avrai successo.
Tommy

Studia studia
cmq usa San Google! :-))
P.S: sei forse di AL?

 P.S: sei forse di AL?
Eh,già! S1 sono di AL e credo di conoscerti (o dovrei dire conoscerla???)...
Il tuo (suo) suggerimento mi sembra valido... tenterò.... grazie eh!
Newsgroup: it.comp.lang.c
Titolo: Ceracsi compilatore

Sto iniziando ad imparare il linguaggio C. C'è qualcuno che può offrirmi ad
un prezzo non esagerato il compulatore Quick C 2.5. Aspetto una vostra
comunicazione.
e-mail: 
ant...@topnet.it







Newsgroup: it.comp.lang.c
Titolo: Allocazione dinamica: help

ciao
 sapevo che le richieste di allcazione dinamica di memoria
 vengono passate al sistema e poi questo ritorna un puntatore
 allo spazio allocato.
 Come e' possibile allora allocare dinamicamente su sistemi
 embedded che non hanno un sistema operativo. Penso per esempio
 a schede a microcontrollore che vengono programmate con 
 linguaggio ANSI C.
grazie e ciao
Enrico

...

Di solito vengono fornite assieme al compilatore funzioni di libreria per
gestire l'heap.
Ogni compilatore ed ogni processore fanno caso a se.
La triste ed onerosa alternativa è di doversele scrivere da soli.
Sergio Bianchi

  linguaggio ANSI C.
Si inizializza il sistema in modo che la lista dei blocchi liberi punti
ad un blocco fisso di memoria (un semplice "char heap[HEAPSIZE];"). Non
esiste sbrk() o simili e quindi l'heap non potra' essere espanso
dinamicamente:
memory.c:
static char my_heap[HEAPSIZE];
void *malloc(...)
{
  // preleva i blocchi da my_heap
}
free(...)
{
  // rimette i blocchi in my_heap
}
L'unico problema e' la dimensione: HEAPSIZE di solito e' una costante
assegnata dal programmatore e deve essere calcolata in base alla memoria
disponibile (non utilizzata dai dati del programma). Alcuni ambienti di
sviluppo potrebbero avere un compilatore/linker che assegna
automaticamente HEAPSIZE in base alla memoria disponibile (gli si dice
quanta memoria c'e': HEAPSIZE = memoria_totale - memoria_usata).
Comunque, di solito l'uso della memoria dinamica viene vietato sui
sistemi embedded.

  linguaggio ANSI C.
Perché dovrebbe interessarti? Se utilizzi un compilatore standard hai la
garanzia che l'allocazione dinamica funzioni. Se non c'è sistema
operativo vorrà dire che la particolare implementazione della libreria
standard si occuperà di gestire il problema.
EMG