mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Avete provato il gioco di programmazione C?

Fatemi sapere qualcosa del gioco!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Fatemi sapere qualcosa del gioco!
che gioco?
-- 
Rhymes (rhy...@NOSPAMmyself.com)
linux registered user #219707
linux registered machine #172395

Newsgroup: it.comp.lang.c
Titolo: LISTE, CODE, ALBERI...

Dove posso trovare ampia documentazione on-line...
che tratti di strutture dati... tipo: liste, code, alberi ecc... ???
Grazie

Nel mio sito nella pagina Informatics puoi trovare implementazioni in c di
:Alberi radicati, liste, stack, alberi binari e grafi.
URL :       
http://www.Geocities.com/nick_hideout/
ciao
Nicola

Newsgroup: it.comp.lang.c
Titolo: [OT?] Caratteri ASCII su Win e Linux

Salve a tutti,
spero di non essere OT, nel qual caso chiedo scusa.
Ho scritto un prog sotto win che fa uso dei caratteri ASCII 'quadratino
bianco' e 'quadratino grigio' (177 e 178, se ricordo bene) - mi
servivano per un rudimentale istogramma. Tutto bene fin quando non ho
provato a farlo girare sotto Linux, dove mi sono accorto che le tabelle
ASCII per i due SO non corrispondono. Tuttavia, dopo aver scritto un
semplice ciclo for per viaualizzare gli ASCII in linux, ho scoperto che
molti simboli, tra cui quelli che interessano a me, non esistono! Mi
trovo invece una lista di quadratini vuoti bordo nero. Qualcuno sa
spiegarmi che accade? Inoltre pensavo che tutti gli ASCII si trovassero
da 0 a 255, mentre se estendo il ciclo for trovo che si ripetono
ciclicamente...
Grazie per eventuali suggerimenti,
mirko
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 spero di non essere OT, nel qual caso chiedo scusa.
I caratteri ASCII vanno da 0 a 127, tutti gli altri sono
aggiunte di IBM, Microsoft e via dicendo. Non puoi sperare
di trovare lo stesso simbolo associato a valori non standard
su due sistemi diversi.
HTH
Ciao


 su due sistemi diversi.
Ah, dunque niente quadratini colorati su linux?
si puo' scaricare ed installare una sorta di ASCII esteso?


 si puo' scaricare ed installare una sorta di ASCII esteso?
Non mi sono mai posto il problema e non saprei risponderti.
Credo che it.comp.os.linux.development sia un ng piu' appropriato
per questa domanda.
C:\>iao Angelo

Newsgroup: it.comp.lang.c
Titolo: endian in run-time?

Come posso fare per far riconoscere in run-time ad un programma che sto
scrivendo l'endian della macchina su cui gira?

 scrivendo l'endian della macchina su cui gira?
Andando a testare come memorizza i bytes all'interno delle parole in
memoria:
/* fa sempre comodo un tipo booleano */
typedef enum {FALSE = 0, TRUE = 1} bool_t;
/*
 *  Restituisce:
 *  TRUE se la macchina e' BigEndian
 *  FALSE se la macchina e' LittleEndian
 */
bool_t
AmIBigEndian( void )
{
    short s = 0x0102;
    char *p;
    p = (char *)&s;
    if( p[0] == 0x01 ) return TRUE;
    else return FALSE;
}
ciao,
Nids

poi l'endian a runtime non serve a nulla ... bastano i controlli di compilazione 
senza dover far nulla a runtime ... infatti cmq un eseguibile di qualsiasi forma 
non e' portabile tra big e little endian ... quindi dovrai cmq ricompilarlo e 
per tanto cosi' i controlli endiannes li fai in fase di compilazione senza 
appesantire il codice generato ... no ???
ciao

Newsgroup: it.comp.lang.c
Titolo: problema con struct

se voglio due strutture, entrambe con un riferimento all'altra...
struct A
{
    int i;
    B provab;
};
struct B
{
    int i;
    A provaa;
};
???? come si fa ???

Newsgroup: it.comp.lang.c
Titolo: compilatori freeware ansi c x win

Ciao a tutti!
Sapete suggerirmi un compilatore (ansi c) free x win? Mi hanno detto che
esistono ma non so il nome....
grazie! michele.

 ha scritto nel messaggio
news:b1b3ht$11fgfg$1...@ID-97922.news.dfncis.de...

cerca con google, LCC e scaricalo ... !
byez

 esistono ma non so il nome....
Dev-C++
--
---------------------------------------------------
There are 10 kinds of people in the world:
those who understand binary, and those who don't
---------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: Terminazione Client/Server Socket

Ragazzi ho un problema con la programmazione socket. Praticamente ho un
server che deve soddisfare alcune richieste. Il problema è che il
processo server dopo che ha soddisfatto una singola richiesta termina,
quando invece dovrebbe rimanere in ascolto per altre possibili
connessioni:
Questo è il main del processo server:
int stabilisciConnessione(int sd) {
  struct sockaddr temp;
  unsigned int size = sizeof(temp);
  return accept(sd, &temp, &size);
}
int main(int argc,char *argv[])
{
  struct  sockaddr_in sad;
  int     sd, sd2;
  pthread_t tid;
  memset((char *)&sad,0,sizeof(sad));
  sad.sin_family = AF_INET;
  sad.sin_addr.s_addr = INADDR_ANY;
  sad.sin_port = htons((u_short) PORT);
  /* Creazione della server-socket */
  if ((sd = socket(AF_INET, SOCK_STREAM,0)) < 0)
  {
    perror("Socket creation failed");
    exit(1);
  }
  /* Bind della server socket all'indirizzo (loacle o remoto ). */
  if (bind(sd, (struct sockaddr *)&sad, sizeof(sad)) < 0)
	{
    perror("Bind failed");
    exit(1);
  }
  /* Setta il numero massimo di connessioni accettabili */
  if (listen(sd, QLEN) < 0)
	{
    perror("Listen failed");
    exit(1);
  }
  printf("Server in attesa...\n");
  /* Ciclo di attesa del processo padre sulla server-socket.
   * Tale attesa ?necessaria per l'arrivo di eventuali nuovi clients.
   */
  while (1)
	{
    /*Creazione della socket associata al nuovo client connesso */
    if ((sd2 = stabilisciConnessione(sd)) < 0)
    {
      perror("Accept failed");
      exit(1);
    }
    else
      printf("ACCETTATO....\n");
    sockd[visits++] = sd2;
    pthread_create(&tid,NULL,(void *)gestisci,&sd2);
  }
}
Questo è il processo client (ovviamente è un processo di prova):
int main(int argc,char *argv[])
{
	int sockadd;
	struct sockaddr_in sa;
	memset((void *)&sa,0,sizeof(sa)); //inzializzazione di sa;
	sa.sin_family=AF_INET;
	sa.sin_port=htons(50000);
        char *host="localhost";
        // int id;
          if((inet_pton(AF_INET,host,&sa.sin_addr))<0)  //Settaggio
dell'indirizzo
                {
                printf("errore nell'indirizzo\n");
                exit(-1);
                }
        if((sockadd=socket(AF_INET,SOCK_STREAM,0))<0) //Creazione della
socket
                {
                printf("Errore nella creazione della socket\n");
                exit(-1);
                }
        if((connect(sockadd,(struct sockaddr *)&sa,sizeof(sa)))<0)
//Stabilisce la connesione
                {
                printf("Errore nella connessione\n");
                exit(-1);
                }
        char comando[512] = "ls ";
          write(sockadd, strcat(comando, argv[1]), 512);
          int x;
          char buffer[100];
          while ((x = read(sockadd, buffer, 100)))
          {
            if (strncmp(buffer, "__EOT__", 7) == 0)
              break;
            printf(buffer);
          }
          close(sockadd);
          exit(0);
}
Cosa ho sbagliato secondo voi?

Risolto grazie. Finiva il client senza chiudere la socket del server e
questo dava problemi...
Daniele ha scritto:

Newsgroup: it.comp.lang.c
Titolo: Problema di definizione di strutture

Salve a tutti. Cercavo di definire una cosa del genere:
typedef struct
{
str2 var;
}str1;
typedef struct
{
str1 *p;
}str2;
ovviamente mi da errore perchè quando va a leggere la str1 (che ha un 
campo str2) non trova la definizione di str2, ovviamente invertendo 
avrei lo stesso problema. Pensavo si potesse risolvere mettendo:
typedef struct _str2 str2;
in testa alle 2 definizioni delle strutture ma mi da errore perchè trova 
   2 definizioni. Come si può fare?
Grazie, Ciao

thecaesar ha scritto:

prova così:
typedef struct _prima prima;
typedef struct _seconda seconda;
struct _prima
{
	seconda *dato;
};
struct _seconda
{
	prima *dato;
};

Ioann Tschaikowsky ha scritto:

Non funziona il compilatore mi da errore 'conflicting types' perchè 
trova dichiarate due volte le strutture


Prova in questo modo:
struct _prima ;
struct _seconda ;
typedef struct _prima
{
struct _seconda *dato;
} prima;
typedef struct _seconda
{
    struct _prima *dato;
} seconda;
prima str1;
seconda str2;
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 }str2;
Legare a filo doppio due strutture non è una cosa bellissima. Come mai
questi dati sono così accoppiati? che stai cercando di realizzare nello
specifico?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Giovanni ha scritto:

Grazie, perfetto! Funziona tutto

 
Non ti posso dire niente nello specifico,ti dico solo che
mi servono dei vettori di quelle strutture. Legandole così posso 
modificare i dati del vettore di str1 leggendo i dati contenuti in str2.
Magari a prima vista può sembrare stano, ma non vedo alternative 
altrettanto valide per risolvere lo stesso problema.
Grazie, ciao

 altrettanto valide per risolvere lo stesso problema.
Non è che "sembra strano", è strano. Accoppiare in modo circolare le
informazioni, in generale, non è il modo corretto di procedere. Credo che
ci sia almeno un modo migliore per svolgere gli stessi compiti. Ma tu non
puoi/vuoi svelare quali sono, quindi pazienza.

Newsgroup: it.comp.lang.c
Titolo: Copia di un file

Ho trovato nel mio manuale questo una procedura esempio per la copia di un
file di testo, ma non mi è chiaro come mai una volta applicata alla copia
di un file eseguibile mi salta un byte vicino all'inizioe me lo tronca 390
bytes anzichè 19.000 e rotti.
#include <stdio.h>
int main() {
  FILE *fpin, *fpout;
  char buf[100];
  int n;
 
  fpin = fopen("C:\\deltree.exe","r");
  if(fpin != NULL) {
    fpout = fopen("C:\\deltree.bak","w");
    if(fpout != NULL) {
      for (;;) {
        n = fread(buf,1,100,fpin);
        if(n == 0) break;
        printf("Sto scrivendo su file perche' n=%d\n",n);
        fwrite(buf,1,n,fpout);
      }
      fclose(fpin);
      fclose(fpout);
    }
    else printf("Errore nell'aprire il file di scrittura");
  }
  else printf("Errore nell'aprire il file di lettura");
 
  getchar();
  return 0;
}
Grazie, Poochie

Perchè devi aprire i files in modalità binaria.  rb e wb invece che r e w.
Suggerimenti:
Invece di 100 definisci una costante BYTESALLAVOLTA con valore 100.
Inoltre di solito conviene usare valori che siano potenze del due. Sotto
Intel conviene probabilmente 4096 (e anche sotto PowerPC). (va un pochino
più veloce)
--- bye

 ha scritto nel messaggio
news:HE05c.54052$O31.2...@news4.tin.it...


 essere 512...cioč la dimensione del blocco di un disco...
NTFS ha sempre cluster da 4kb... Magari tu usavi un piccolo HD sotto FAT32.
--- bye
Newsgroup: it.comp.lang.c
Titolo: ma perchè mi va in loop???

lo so sono una frana, ma perchè i va in loop???
Grazie!!!
#include<stdio.h>
#include<stdlib.h>
char elenco[13]={'a','c','d','g','h','l','m','q','r','t','v','w','z'};
char chiave='t';
int n,indice,primo,ultimo,trovato,mediano;
main(){
        primo=0;
        ultimo=12;
        trovato=0;
       indice=4;
       while(trovato==0){
                mediano=(primo+ultimo)/2;
                printf("%d",mediano);
                if (chiave==elenco[mediano])
                trovato=1;
                else
                if (chiave<elenco[mediano])
                ultimo=mediano-1;
                else
                ultimo=mediano+1;
                }
        indice=mediano;
        printf("%d\n",indice);
        system("pause");
                        }

                 }
      if (chiave<elenco[mediano])
        ultimo=mediano-1;
      else
        primo=mediano+1;
Ciao,
Ema

                }

 ha scritto nel messaggio
news:bc7du2$g89vg$1...@ID-190851.news.dfncis.de...


 coricarmi tardi può essere una giustificazione..?
no, ma puoi sempre dire che prima di farlo ti sei svegliato in un 
fosso, tutto bagnato, e ti mancava un rene.
-- 
Lord Gas, the Waxen - Blasfemo di IFTMDG - Penguin's Enemy #1 
[ICQ: 57483751][the Waxen Pith: 
http://www.snipp.org/gas
]
... "Goddamn, there's always such a big temptation to be good"
... (Tom Waits - God's Away on Business)


Di niente.
Se lo accetti, ti do un consiglio per il futuro.
Siccome questo era un programmino abbastanza semplice, e' bastato simularne
l'esecuzione su carta per scoprire il problema. Spesso funziona.
Inoltre, per capire meglio dove poteva essere l'errore e' bastato inserire
un "getchar()" nel ciclo in modo di vedere passo passo l'esecuzione del
programma.
Certo, sono tecniche stupide di debug, ma mai fuori moda.
Ciao,
Ema
Newsgroup: it.comp.lang.c
Titolo: Errore arrotondamento

Provate ad eseguire i due banali programmini di seguito:
/* PROGRAMMA A */
#include <stdio.h>
int main()
{
 double x=156.18;
 double y=6635.72;
 double z;
 z=x+y;
 printf("%20.20f\n",z);
 return 0;
}
/* PROGRAMMA B */
#include <stdio.h>
int main()
{
 double x=5.1;
 double y=5.2;
 double z;
 z=x-y;
 printf("%20.20f\n",z);
 return 0;
}
ho ricevuto risultati sorprendenti:
programma A: 6791.90000000000054600000
programma B: -0.10000000000000053291
Possibile che un numero di tipo double (che su compilatore "BCC" ha una 
dimensione di 8 byte) abbia simili errori di precisione?
Per inciso, mi sono accorto del problema eseguendo su un BROWSER (!) questo:
javascript:alert(156.18+6635.72)
Processore utilizzato: Pentium 4 2.4GHz

Anche sulla mia macchina (che comunque è un Pentium 4), ottengo gli
stessi risultati. L'unica cosa che posso dirti è che l'aritmetica in
virgola mobile è molto complicata a livello macchina, ho letto un
documento sull'argomento tempo fa.
Comunque dipende tutto dalla precisione che ti interessa. Se per caso
devi lavorare con numeri molto grandi, o ti serve una precisione
maggiore, su questo ng hanno già segnalato la libreria Gnu gmp:
http://www.swox.com/gmp
Se invece la precisione non è molto alta, i buon vecchi float o double
possono andar bene lo stesso.

 dimensione di 8 byte) abbia simili errori di precisione?
si è possibile. un numero decimale può essere periodico in 
binario. quindi per esso è possibile solamente una 
rappresentazione approssimata (ottima quanto vuoi, ma pur 
sempre approssimata) avendo a disposizione un numero finito 
di bit.
esempio riferito ai tuoi risultati, ecco la conversione 
binaria di 0.9:
0.9 * 2 = 1.8  |  1 <--+
0.8 * 2 = 1.6  |  1    |
0.6 * 2 = 1.2  |  1    |
0.2 * 2 = 0.4  |  0    |
0.4 * 2 = 0.8  |  0 ---+
poi ci possono essere anche degli errori di approssimazione 
dovuti all'addizione per la quale si devono eguagliare gli 
esponenti degli addendi shiftando le mantisse.
ciao.

 0.4 * 2 = 0.8  |  0 ---+
ooops! il "loop" si riferiva alla seconda riga :)
0.9 * 2 = 1.8  |  1
0.8 * 2 = 1.6  |  1 <--+
0.6 * 2 = 1.2  |  1    |
0.2 * 2 = 0.4  |  0    |
0.4 * 2 = 0.8  |  0 ---+
ciao.

 dimensione di 8 byte) abbia simili errori di precisione?
...
Nessun mistero. Non puoi "creare" precisione dal nulla. Con 64 bit e con 
lo standare IEEE 754 (alias IEC qualche altra sigla) per la 
rappresentazione dei double non ha senso chiedere piu'  cifre 
significative di quelle disponibili (che sono circa 16, il circa viene 
dalla conversione tra binario e decimale). Tu chiedi di visualizzare 
piu'  di 20 cifre,  non puoi che ottenere risultati strani.
Entro lo standard per i floating point e il numero di bytes riservati ai 
double,  il risultato e' indipendente da OS e dal linguaggio.
Giorgio

 ho ricevuto risultati sorprendenti:
Non c'e' nulla di soprendente, se uno conosce un minimo
il concetto di rappresentazione in base.
Per una trattazione delle varie problematiche ti suggerisco
di leggere questo documento:
http://cch.loria.fr/documentation/IEEE754/ACM/goldberg.pdf
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: Help!!!

Ho dichiarato un vettore di interi.
Quando si immettono i valori vorrei eseguire un controllo del tipo:
Inserire il valore del primo elemento:  d (viene inserito il valore d)
I valori possono essere solo di tipo intero!!!
Inserire il valore del primo elemento: 5
Inserire il valore del secondo elemento: 6
ecc.
Qualcuno mi sa dire che devo inserire nella seconda parte dell' istruzione
if?
if ( vettore[i] != "qui che ci metto?" ){
    printf("I valori possono essere solo di tipo intero!!!\n");
    goto loop;
}
Grazie.
Salvatore

    goto loop;
brrrrrr perchè usi il goto?

Newsgroup: it.comp.lang.c
Titolo: Dove trovo c o c++ per dos?

Come sopra
--
-----------------------------------------
ICQ: 11197461



 ICQ: 11197461
Puoi trovare il compilatore DJGPP (compilatore C/C++ a 32 bit per Dos)
al sito: 
www.delorie.com
-- 
  ______ ___  _  ______ ______                   ___                          
   )    ) ) )/ )(___   ) )    )______ ______ _____) )  ________________....  .
  / // / /  __/  __/ _/ / // /  ) _  ) )    ) )    / ________________....  .
 / _/ / / _ \  _/  /_  / _/ /  / ___/ / // / / // /   ______________.... . .
(_____)(_/ \_)(______)(_____) (_____)(__/__)(_____) __________________....  .
<===========================================================================>
*T*h*e*   *M*a*g*i*c*   *I*s*   *E*v*e*r*y*t*h*i*n*g*   *Y*o*u*   *I*m*a*g*i*n*e*
		e-mail  
DK2...@cryogen.com
 
am57...@silab.dsi.unimi.it

 Come sopra
Cerca il Djgpp in rete.
-- 
Matteo Gottardi / 
goma...@tin.it
*Linux*, The choice of a _GNU_ generation

Newsgroup: it.comp.lang.c
Titolo: Leggere FILE

Salve ecco il mio problema:
ho un file dati.txt che contiene le seguenti righe:
c 56 78
c 54
t 34
d 40
f
dovrei leggere il file e ogni riga la devo analizzare con un metodo già
definito da me. Grazie a tutti.

definito da me.
Direi che il problema lo risolvi brillantemente con una fgets()
<CODE>
char buffer[80];
FILE * nomefile;
[inizializzi in qualche modo il nomefile]
while (fgets(buffer, 80, nomefile) != NULL)
	[fai quello che devi fare con la riga appena catturata];
</CODE>
Mox :)
Newsgroup: it.comp.lang.c
Titolo: Re: Errore nel Kernel

 }
lo standard penso preveda la minuscola. Almeno il gcc sotto
linux si rifiuta di aprire il file se usi "W" e quindi
siccome il file non e' aperto, la successiva fprintf causa un
segmentation fault.
prova mettere queste linee al posto della tua
fprintf:
    if (fp)
    {fprintf(fp,"aaaaaaa"); fclose(fp);}
    else printf("Non sono riuscito ad aprire il file!\n");
cosi' vedi.
Se (come col gcc sotto linux) in uno dei tuoi windows
il file non viene veramente aperto ovviamente dopo ti becchi
un messaggio del kernel (o se sei sfortunato NON te lo becchi
ma il file non contiene nulla lo stesso...)
ciao,
g.

Newsgroup: it.comp.lang.c
Titolo: udp client e server

ciao a tutti! ho un problema con i socket udp. Volevo creare un socket,
su una porta locale prestabilita, e collegarmi ad una porta remota
ugualmente prestabilita. Se faccio questo, il socket riesce a spedire ma
non a ricevere. in "pseudo codice" farei cosi':
socket( AF_INET, SOCK_DGRAM, 0 )
struct sockaddr_in remote = AF_INET, 
192.168.0.60:5000
struct sockaddr_in local = AF_INET, INADDR_ANY:5010
bind socket su local
connect socket a remote
send string to socket = OK
recv from socket = non da errore ma non riceve nulla ( aspetta dati da
0.0.0.0:5010
 )
quello che vorrei ottenere sarebbe una comunicazione bidirezionale da
localhost:5010 a remote:5000. il problema sembra la forzatura della
porta locale, perche' se la lascio scegliere al SO, funziona.
Grazie a tutti... anche e soprattutto per puntatori a info, sia online
che cartacei
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ugualmente prestabilita.
[...]

 Lorenzo
il codice e' un po' lungo, e molte linee superano i 72 caratteri. se ti 
interessa, scrivimi in privato che te lo mando
grazie
Ivan
-- 
Live never to be ashamed if anything you do or say is
published around the world -- even if what is published is not true.
                -- Messiah's Handbook : Reminders for the Advanced Soul

Newsgroup: it.comp.lang.c
Titolo: Vedere se un double è positivo o negativo

Ciao a tutti, scusate la domanda banale ma sono alle prime armi... ^_^
Come fare per vedere se un numero double, inserito da tastiera, è positivo o
negativo?
Kris


	if(double_inserito > 0)      { /* positivo */ }
	else if(double_inserito < 0) { /* negativo */ }
	else                         { /* zero */ }
   Per convertire una stringa (ossia il dato proveniente da stdin) in un 
double, usa la funzione strtod.
-- 
Alla prossima,
Marco
Newsgroup: it.comp.lang.c
Titolo: Novizio in cerca di aiuto!

void autelib()
{
	struct libro LIB[VETT];
	struct autore AUT[VETT];
	int i=0, j=0;
	FILE *faut, *flib;
	flib=fopen("testi.txt","rt");
	faut=fopen("autori.txt","rt");
	while ((fscanf(flib, "%d\n", &LIB[i].codice_aut))>0 ){	
		fgets(LIB[i].titolo, VETT, flib);
		fscanf(flib, "%d", &LIB[i].anno);
		j=0;
//Il prossimo while viene eseguito una volta sola, perchč?
	while((fscanf(faut,"%d\n%s\n%s\n%s\n",&AUT[j].codice_aut,
AUT[j].cognome, AUT[j].nome, AUT[j].nazio))>0){
		if (LIB[i].codice_aut==AUT[j].codice_aut){
			printf("%s %s\t",AUT[j].cognome, AUT[j].nome);
			printf("%s",LIB[i].titolo);
			}
		j++;}
	i++;}
	fclose(flib);
	fclose(faut);
}

SONO UN PIRLA!, ecco come ho risolto il problema!
void autelib()
{
	struct libro LIB[VETT];
	struct autore AUT[VETT];
	int i=0, j=0;
	FILE *faut, *flib;
	flib=fopen("testi.txt","rt");
	faut=fopen("autori.txt","rt");
	while ((fscanf(flib, "%d\n", &LIB[i].codice_aut))>0 ){	
		fgets(LIB[i].titolo, VETT, flib);
		fscanf(flib, "%d", &LIB[i].anno);
		i++;}
	while((fscanf(faut,"%d\n%s\n%s\n%s\n",&AUT[j].codice_aut,
AUT[j].cognome, AUT[j].nome, AUT[j].nazio))>0){
		j++;}
	fclose(flib);
	fclose(faut);
	i=0; j=0;
	while (LIB[i].codice_aut>0){
		while (j<VETT){
	if ((LIB[i].codice_aut==AUT[j].codice_aut)){
		printf("%s %s     ",AUT[j].cognome, AUT[j].nome);
		printf("%s",LIB[i].titolo);}
	j++;}
	j=0;//se no sai che casino!
	i++;}
}

 	i++;}
Qui usi dei while dove avresti potuto usare dei for (se tu
avessi salvato il numero di autori e di libri letti...).
Inoltre fai scorrere l'indice j fino a VETT anche
se (in linea di principio) gli autori letti possono
essere meno di VETT (che detto fra noi non e' proprio
la scelta piu' felice per il nome di una costante):
questo puo' ovviamente causare errori abissali,
anche perche' (altro probabile errore) fai l'altro test
su LIB[i].codice_aut>0 e anche questo ciclo potrebbe non
terminare correttamente, perche' non e' detto che
quando il compilatore alloca l'array di struct vada
ad azzerare tutti i campi (anzi e' molto probabile che
ci siano dentro dei valori a caso...)
ciao,
g.
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: Come calcolare il tempo trascorso in millisecondi.

Salve a tutti!
Devo vedere quanto ci mette un pezzo di codice C ad essere eseguito, con
precisione dei millisecondi, ma non so come farlo. Ho provato a usare la
funzione time() in time.h, ma ha una precisione dei secondi. Qualcuno
puo'aiutarmi? Grazie in anticipo.

 ha scritto nel messaggio
news:39514FC1...@lycos.com...


puo'aiutarmi? Grazie in anticipo.
Usa la funzione biostime della bios.h.Che ti da il tempo in termini di
giri del clock dalla emzzanotte...non e' in millisecondi ma e' piu'
rpecisa di altre
Augusto Pucci
Webmaster di Prospektiva On-line
http://www.prospektiva.it

 puo'aiutarmi? Grazie in anticipo.
potresti usare clock che ha una precisione di 1/18.2 sec e far eseguire il
tuo codice
molte volte tipo
#define N_VOLTE 10000
...
int c;
clock_t t1=clock();
float time;
for(c=0;c<N_VOLTE;c++)
{
     //  istruzioni
}
time=(float)(clock()-t1);
time/=(float)N_VOLTE*18200.0f;
t1=(clock_t)time;
printf("Tempo impiegato: %d\n",t1);
....
ovviamente il tempo impiegato per il ciclo è ininfluente.
ciao

ovviamente il tempo impiegato per il ciclo è ininfluente.
non so quanto possa essere ininfluente, ma basterebbe
sottrarre il tempo che impiega il ciclo "vuoto" da
quello che impiega il ciclo "pieno".
Oha
-- 
#include <disclaimer.h>

molte volte tipo
Ma darebbe risultati veritieri solo in alcuni casi: bisogna tener conto che
potrebbe essere determinante l'uso della cache (disco o RAM), o simili.
Saluti,
    Mardy

Nonn vorrei dirti una caz*ata...ma dovrebbe esserci la funzione delay che fa
al caso tuo...prova.
Ciiips
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

...


Newsgroup: it.comp.lang.c
Titolo: Fortran vs c

ciao a tutti..
c'e' qualcuno che conosce qualche tool per tradurre velocemente un programma
fortran in c ??
il programma fortran da tradurre e' facil  e.. lavora per lo piu' su
matrici..
devo cioe' convertire do... continue   in    for..
grazie
ciao
GM

 GM
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 wrote in message
rmk8bp9...@mlinux.pd.infn.it...


 Valeva la pena di rispondere così inutilmente secondo te??
  E` una risposta accademica. La risposta produttiva, invece, e`: cerca
sulla Rete il programma /f2c/ oppure usa il front end /g77/ per il
compilatore /gcc/ della Free Software Foundation.
	Alla prossima,
		Marco

Salve,
  Nel seguente indirizzo spero c'e' un programma di conversione tra F77 e
C: 
 
ftp://ftp.unina.it/pub/Pcibm/simtelnet/msdos/fortran/
                                                    Daniele
Newsgroup: it.comp.lang.c
Titolo: dubbio sulle stringhe. aiuto.

Salve.
Avrei bisogno di un po' di chiarezza sull'uso delle stringhe (array di char)
in C.
Facendo un esempio vi espongo il mio dubbio:
  #include <stdio.h>
  char stringa[]="CIAO";  // <--- CORRETTO
  main() {
 stringa="CIAO"; // <--- ERRORE
  }
vorrei sapere perchè nel secondo caso ottengo un errore da parte del
compilatore.
In particolare mi interessa sapere come assegnare una stringa, fuori dal
blocco dichiarativo.
se faccio così invece è tutto ok:
#include <stdio.h>
char *stringa;
main(){
 stringa="CIAO";
}
questa soluzione fa impiego di un puntatore a carattere, ma non mi è chiara
una cosa.
La stringa "CIAO" dove viene memorizzata? Sullo stack?
Ciò mi preme saperlo per capire fino a che punto posso spingermi con
l'utilizzo dei
puntatori a carattere per la gestione delle stringhe senza rischiare di
saturare lo stack.
Se così fosse come posso fare ad assegnare una stringa ad un array di char
già dichiarato e definito senza
ottenere l'errore di cui sopra?
Ringrazio in anticipo
Cordiali saluti.

 Cordiali saluti.
Ciao.

variabili l'indirizzo di memoria del primo elemento che compone la stringa.
Quasi certamente non potrai nemmeno modificare la stringa puntata da a
e da b.
-- 
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
news:1CBo8.85318$1S3.2...@twister1.libero.it...

Newsgroup: it.comp.lang.c
Titolo: trovare una stringa all'interno di un file di testo

Dovrei implementare una funzione che si occupa di trovare una stringa
(passata come parametro alla funzione) all'interno di un file di testo
(anche questo passato come parametro) e che sostituisca questa stringa con
un altra (passata come parametro). Come posso fare? scusate se la domanda č
banale ma ho iniziato il c da poco...
ciao

 un altra (passata come parametro).
spero di non farti il compito, ma guarda se ti puo' essere utile per capire:
------------------
int  fileSubstText ( char * filename, char * findtxt, char * repltxt )
{
  FILE *fr,*fw;
  char line[256],*p;
  int  lf=strlen( findtxt );
  int  lr=strlen( repltxt );
  int  count=0;
  fr=fopen( filename,"rt" );
  if( !fr )  return -1;
  fw=fopen( "1.tmp","wt" );
  if( !fr )  return fclose(fr),-2;
  while( fgets( line,sizeof( line ),fr )!=NULL )
  {
    for( p=strstr( line,findtxt ) ; p ; p=strstr( p+lr,findtxt ),count++ )
    {
      memmove( p+lr,p+lf,strlen( p+lf )+1 );
      memcpy( p,repltxt,lr );
    }
    fputs( line,fw );
  }
  fclose( fw );
  fclose( fr );
  remove( filename );
  rename( "1.tmp",filename );
  return count;
}
---------------------
mancano un po di controlli di dimensione nel manipolare l'array line[],
aggiungili tu.
ciao
donCiccio

 ha scritto nel messaggio
news:992vmj$l8p$1...@nreadA.inwind.it...


Newsgroup: it.comp.lang.c
Titolo: scanf e double

Scusate la domanda forse un po' banale:
Come devo fare ad assegnare un valore ad una variabile double
usando la func. scanf() ???
Ho provato con:
double pippo;
scanf("%g", &pippo);
printf("%g", pippo);
ma se inserisco un valore tipo: 123.123456789 mi ritorna un
risultato assurdo. Sbaglio qualche cosa ??
Grazie... PAOLO.

printf("%g", pippo);
#include <stdio.h>
main()
{
    double n ;
    scanf ( "%lf", &n ) ;
    printf ( "%.14f\n", n ) ;
}
Newsgroup: it.comp.lang.c
Titolo: Help.....perchè così funziona ?.....non dovrebbe.......

#include <stdio.h>
int var[10],x;
int *p_var;
int main()
{
                /* Attribuisce 10 numeri casuali all'array Var */
               for(x=0;x<10;x++)
                      var[x]=rand();
                /* Stampa a video gli indirizzi di memoria di Var */
                     printf("\n******************************************");
                     printf("\n* Tabella degli indirizzi di memoria Var *");
                     printf("\n******************************************");
                     for(x=0;x<10;x++)
                     printf("\n \t%d° posizione : \t%d",x,&var[x]);
                /* Stampa a video il contenuto fi Var utilizzando il
puntatore */
                    printf("\n******************************************");
                    printf("\n* Contenuto di Var                       *");
                    printf("\n******************************************");
                    p_var=var;
                    for(x=0;x<10;x++)
                   {
                              printf("\n Alla \t%d* posizione c'è \t%d e
dovrebbe esserci \t%d",x,*p_var,var[x]);
                              /* p_var+=sizeof(int); Così non funziona
!!!!!!!!!!!! */
                              p_var+=1;
                    }
 return 0;
}
 Perchè se incremento il puntatore di sizeof p_var viene incrementato di 16
anzichè di 4 ?
 Perchè se incremento il puntatore di 1 p_var viene incrementato di 4 ?
Grazie Andrea

  Perchè se incremento il puntatore di 1 p_var viene incrementato di 4 ?
Perché così funziona l'aritmetica dei puntatori. La notazione p + n
significa sommare all'indirizzo puntato da p un numero di bytes pari a n
* sizeof( int ) (nel tuo caso).
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

 Perchè se incremento il puntatore di 1 p_var viene incrementato di 4 ?
Perché l'aritmetica dei puntatori prevede come unità di misura la
lunghezza del tipo puntato (nel tuo caso sizeof(int), che sulla tua
macchina vale 4).  L'operazione corretta è sempre:
p = p + 1;
e MAI:
p = p + sizeof *p;
Così come, per gli array, l'operazione corretta è:
*(a + n) 
e MAI:
*(a + n * sizeof *a)
-- 
Andrea Laforgia
www.geocities.com/andrealaforgia
"640kb of memory should be enough for anyone." -- Bill Gates.

 *(a + n * sizeof *a)
Qualche riferimento a recenti thread? :-)
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

Qualche riferimento a recenti thread? :-)
Infatti.  Questo è l'esempio palese del tipo di confusione che viene
fuori ;-)

Newsgroup: it.comp.lang.c
Titolo: [?]Vi faccio inc####are, eh

Salve a tutti , stavo leggendo il libro "LABibbia" K&R , devo fare una
riflessione
su questo libro; secondo me per principianti non e assolutamente adatto , in
poche parole
il libro vero č propio e di 217 pagine , da pagina 219 inizia l'ottavo
capitolo"Interfaccia del sistema Unix"
e da pagina  247 inizia l' Appendice A con il  Reference Manual , da pagina
319 inizia l'Appendice B
con la Libreria Standard , secondo me un'pň poco per  principianti  del C
(IMHO).
Cmq , c'č qualcuno che sa dirmi come fare per stampare un file in formato
ASCII (il solito *.txt)
sulla "Bibbia" ho torvato nulla.
Ciao Roberto


«If the facts don't fit the theory, change the facts.»
(Albert Einstein)

sulla "Bibbia" ho torvato nulla.
E' ovvio. Su qualunque libro di C standard non solo non trovi nulla del
genere, ma non *devi* trovare nulla del genere, in quanto stampare su una
stampante un file in formato testo è un'operazione legata al sistema
operativo, e non allo standard del linguaggio, che non fa differenza fra i
terminali utilizzati: in C ci sono solo stream, non importa che poi
finiscano a video, su hard disk o su carta.
Lanugo

Cmq , c'è qualcuno che sa dirmi come fare per stampare un file in formato


Newsgroup: it.comp.lang.c
Titolo: [Forse OT] Ansi e tipi di base

Scusate mi piacerebbe sapere se nello standard ANSI X3.159, è specificato la
dimensione in byte  dei tipi base come short int, int e long int, o viene
lasciata libertà alla singola implementazione.
Grazie
ComUni

you wrote:

La dimensione dei tipi base e' implementation-dependent.
Lo standard assicura solo che le dimensioni sono nella relazione
d'ordine :
sizeof( short ) <= sizeof( int ) <= sizeof( long ) 
e' assicurato solo che sizeof( char ) = 1 
--
Andrea Laforgia
"Nessun linguaggio di programmazione e' perfetto"
                              - Bjarne Stroustrup

 e' assicurato solo che sizeof( char ) = 1
Non c'era anche un vincolo sulla dimensione del tipo long, mi pare non
inferiore a 32 bit?
EMG

inferiore a 32 bit?
esatto.
char almeno 8 bit
short almeno 16 bit
long almeno 32 bit
Newsgroup: it.comp.lang.c
Titolo: c ed altro

Ciao ragazzi,
 non sono un esperto di programmazione ma volevo solo lanciare una discussione.
 Ossia spesso si sente parlare è meglio usare il c, è meglio usare java od
altri linguaggi.
 Quello che volevo sapere da Voi è questo, riuscite con un esempio dimostrare
dove è più potente un programma scritto in c che nessò magari di uno scritto in
Delphi/Visual Basic.
Vi prego non usate la classica risposta "dipende da che programma si a
fare(giochi,musica,gestionali,grafica,etc", se vi va bene possiamo prendere in
esame un programma gestionale aziendale.
NB.
 non chiedo sorgenti ;-) solo discorsi teorici.
Ok forse a Voi sembrerà una cazzata ma aiuterete una persona a ordinare un po
di idee.
Ok il dibattito è aperto.
Ringrazio tutti
Devis
Ah, dimenticavo non è ot questo vero? Altrimenti chiedo scusa...
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Delphi/Visual Basic.
   Se il cliente richiede che il programma sia scritto in C. Puo` 
sembrare banale, ma una buona percentuale delle scelte dell'ambiente di 
sviluppo dipende proprio dalle necessita` vere o presunte di chi ti 
paghera`.
-- 
Veri pirati noi siamo       Ma cosa c'e` di male?
Contro il sistema lottiamo  Ma cosa c'e` di strano?
Ci esercitiamo a scuola     Facciamo un gran casino
A far la faccia dura        Ma in fondo lavoriamo
Per fare piu` paura         Per capitan Uncino

paghera`.
Non esistono linguaggi migliori in assoluto, ma linguaggi adatti a
particolari esigenze.
Ogni linguaggio ha punti di forza e carenze, tutto sta a vedere cosa
ci devi fare.
Esempi:
- programmare un'interfaccia grafica? TCL/TK
- programmare il kerlen di un sistema operativo? C+ASM
- lavorare pesantemente sulle stringhe? Perl
Tieni presente che in linea teorica puoi fare tutto con qualsiasi
linguaggio (male magari o facendo una fatica terribile).
Diciamo che il C e' nato per essere il piu' versatile possibile e in
particolare per sostituire l'ASM nella scrittura dei sistemi operativi
(per quanto possibile).
Personalmente non mi piace il Java per vari motivi (non portabilita'
da una versione della VM a un'altra, sia verso l'alto che verso il
basso, lentezza del codice prodotto), ma questo e' solo un'oppinione
personale.
Mox :)
Newsgroup: it.comp.lang.c
Titolo: Informazioni su Macchina Touring

Oggi la mia prof di Fondamenti di Informatica ha tentato di spegarcela!
Fallimento! Ho capito che come ha fatto fin'ora, devo fare da solo...quindi:
chi ha del materiale su questa macchina di touring? dove posso trovare
info?? pls help me!
--
Ciao,
 Jolly;
 Illuvatar su UO (Venus);
 Icq#:18571798;
 Hackeretto per gli amici;
 
joll...@libero.it
;
 
jolly82.supereva.it
.

Qui sei OT.
Vai su it.comp.ia
Dome

 info?? pls help me!
   Per "macchina di touring" intendi quella messa a disposizione dei 
turisti /fly-and-drive/ oppure l'astrazione matematica per il calcolo 
automatico meglio nota come "macchina di *Turing*"?
   Nel primo caso il mio consiglio e`
 
http://www.touringclub.it
altrimenti prova a navigare un po' partendo da
 
http://www.turing.org.uk/turing/bio/part3.html
   In ogni caso, in questo newsgroup sei *off* *topic*.
-- 
Spugnaaaa!
Pendaglio da forca!!
Possibile che nessuno si muova?!?
Ma sono o no il comandante
Di questa lurida nave?

Ehehe che simpatico....eeheh
Scusatwe l' OT ma non credevo di esserlo...io so solo che devo dare 1 esame
di C
--
Ciao,
 Jolly;
 Illuvatar su UO (Venus);
 Icq#:18571798;
 Hackeretto per gli amici;
 
joll...@libero.it
;
 
jolly82.supereva.it
.
"Capitan Uncino" <c.uncino@l'isolachenonc'e`.org> ha scritto nel messaggio
news:9tdrb1$guo$1...@news.flashnet.it...


di C
La macchina di Turing e' comodamenta implementabile in C... qualsiasi
programma C puo' essere realizzato con una MdT :P
Il posto giusto in cui chiedere e' it.scienza.informatica, dove si
parla di informatica, in tutti i suoi aspetti :)
Ti do un piccolo aiuto:
http://www.mfn.unipmn.it/~lavinia/corsi/vecchio_ord/mdt_vo.ps
Mox :)
Newsgroup: it.comp.lang.c
Titolo: Indirizzi di memoria

Come faccio a vedere l'indirizzo scritto nel formato XXXX:XXXX
(es. 0B24:2311, valori inventati sul momento) ?
Mi riferisco all'indirizzo assegnato ad una variabile.
Se visualizzo ad esempio &myvar come intero, naturalmente compare
un numero. Invece se lo visualizzo come stringa non ricordo, ma non
nel formato che dovrebbe essere.
Dove sbaglio?
--
Novalis
spar...@ngi.it



Potresti utilizzare una variabile long int per contenere l'indirizzo
e stamparla in esadecimale.
la stringa di formato da utilizzare nella printf dovrebbe essere %x
Chiedo scusa nel caso in cui io non abbia capito quale fosse il
problema.
Cia a tutti.

Mmm.. non sei stato troppo chiaro :)
Cioč, ho capito cosa intendi ma non č quello di cui avevo bisogno,
o almeno credo.
Un indirizzo di memoria dovrebbe essere composto da due parti:
XXXX (l'indirizzo del primo byte) e XXXX (l'offset).
Avrei bisogno di visualizzare questi due elementi, come da specifiche
Intel per la gestione della memoria.
Chiedo scusa per eventuali strafalcioni dovuti alla mia ancora scarsa
conoscenza del linguaggio.

Intel per la gestione della memoria.
Se ti riferisci al sistema MS-Dos l'indirizzo e' composto dall'offset
contenuto nella variabile e dal registro di segmento a cui appartiene.
Ad esempio se una variabile e' dichiarata con visibilita globale essa
si trovera nel Data Segment del programma .
Il suo indirizzo sara' quindi _DS:offset ,dove per offset e' inteso
proprio l'indirizzo della variabile .
 int globalVar = 0 ; 
 printf("L'indirizzo completo della variabile e' :
%X:%X",_DS,&globarVar) ;
L'unico intoppo potrebbe essere la variabile _DS che ad esempio e'
contenuta nei compilatori Borland ma non so se presente in altri .
In caso contrario devi ricavarti in altro modo il valore del DS ,ad
esempio implementando delle istruzioni asm direttamente nel codice
sorgente 
 

 (es. 0B24:2311, valori inventati sul momento) ?
int  var;
printf( "%p",&var );
in DOS per avere il formato SEG:OFF il tuo applicativo lo devi compilare
con modello LARGE.
ciao
donCiccio

Newsgroup: it.comp.lang.c
Titolo: Consiglio su libro per fork, system, exec controllo errori su linux

Ciao,
sto cercando un buon libro che tratti in maniera chiara
e approfondita .. con esempi delle funzioni fork() system() exec..()
ed il controllo dei segnali ed errori su Linux.
Inoltre mi piacerebbe che trattasse anche l'argomento "sicurezza" .. come
evitare buffer overflow e spiegasse anche il gcc.
Qualche consiglio ?
Grazie mille
                                        -- Yena --


it.comp.os.linux.development
-- 
sbi
Newsgroup: it.comp.lang.c
Titolo: [REPOST] Visita in preorder su un trie

Ciao a tutti!
Per un lavoretto che sto facendo (che sfrutta un albero), ho deciso
di usare una visita in preorder.
... innanzi tutto non so se ne vale la pena, la struttura di un
nodo č:
typedef struct_nodo
   {
        char lettera;
        char * parola;
        int last_node;
        struct_nodo * padre;
        struct_nodo * percorso[62];
   };
Le parole sono al massimo 5.000 (quindi circa 2,5 MB di memoria
utilizzata) e c'č un nodo pe ogni lettera... per chi volesse una
spiegazione su come funziona questa struct, ho postato un thread
intitolato "Diz".
Grazie a tutti.
Ciao
-----
Io ci ho provato:
Io ci ho provato... non l'ho ancora testata, ma spero non sia
troppo una scemenza... che dite?
int mostra(struct nodo *t)
    {
    int flag, x = 0;
    if (t != NULL)
       {
       for (x=0; x<62; x++)
           {
           if (t->percorso[x] != NULL)
              {
              flag = 1; //C'č almeno un figlio
              if (t->nodoTerminale == 1)
                 {
                 scrivi(t);
                 }
              mostra(t->percorso[x]);
              }
            if ((x == 61) && (flag == 0) && (t->padre != NULL))//Se
il nodo non ha figli
               {
               scrivi(t); //Se non ha figli č terminale
               //t = t->padre; //torna al padre automatico nella
ricorsione
               }
            }
       }
    }
Che ne dite?

di usare una visita in preorder.
Non ricordo cosa significa "visita in preorder". :-(
-- 
Saluti,
    Mardy
Newsgroup: it.comp.lang.c
Titolo: errore con fprintf

Se uso il seguente ciclo per leggere l'input da una porta seriale (dopo
averla settata adeguatamente) ottengo correttamente l'output sullo
schermo:
while (STOP==FALSE) {
 res = read(fd,buf,255);
        buf[res]=0;
        printf(buf, res);
      }
se invece sostituisco prinf con fprintf nel seguente modo (dove "file" è
stato dichiarato come FILE *file:
while (STOP==FALSE) {
 res = read(fd,buf,255);
        buf[res]=0;
        fprintf(file, buf, res);
      }
il file che risulta (naturalmente dopo averlo aperto e correttamente
chiuso) è vuoto.
notare che sostituendo "file" con "stdout" ottengo lo stesso un output
su schermo.
Dove sbaglio???
Grazie.

         fprintf(file, buf, res);
Comunque gli argomenti che passi a printf probabilmente sono sbagliati,
nel senso che res o non ci va oppure in buf c'è una stringa di formato,
ma mi sembra improbabile che tu vada a leggere una stringa di formato
sulla porta seriale...
ciao.

       }
Mi sembra strano che tu ottenga qualcosa dato che sbagli l'uso della
printf() (cosě come della fprintf() che citi dopo). Il primo parametro
deve essere uno specificatore di formato e il secondo il dato da
scrivere. Nel tuo caso direi qualcosa tipo
printf( "%s", buf );
EMG

Scusate, sono ancora un profano;
Sento spesso citare la funzione fflush()
(ci vorrebbe una FAQ)
Che cosa fa e in quali casi va usata?

you wrote:

fflush() server a svuotare uno o tutti i buffer di output.
Per i buffer di input ha comportamento indefinito.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
"There is nothing better for understanding a kangaroo than seeing it jump."
[D.Grune, C.J.H. Jacobs]

 Che cosa fa e in quali casi va usata?
Quando si vuole essere sicuri che in un certo punto del programma i
buffer degli stream di output siano stati svuotati e cioè che sia stata
effettivamente eseguita la scrittura a video, sul disco o su
qualsivoglia altra periferica di output.
EMG

 Che cosa fa e in quali casi va usata?
[root@fokhouse /root]# man fflush | col -b | grep -A4 ^DESC
DESCRIPTION
       The  function  fflush  forces a write of all buffered data
       for the given output or update  stream  via  the  stream's
       underlying  write function.  The open status of the stream
       is unaffected.
[root@fokhouse /root]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)
Newsgroup: it.comp.lang.c
Titolo: stringa -> parsing di un float

ho un array di char in cui dentro c'č un pň di immondizia tra cui un float 
in questo formato
        7.9999e-05
con degli spazi agli estremi.
Qual'č la maniera piů elegante per estrapolare il dato correttamente?
Ciao e grazie.
-- 
__________________________________
"Ama e fai c'ho che vuoi".... 
__________________________________

 Ciao e grazie.
mi rispondo con un post inserito qualche anno fa:
da: Marco Coppo
Come faccio a convertire una stringa in una variabile numerica?
Si usano le funzioni della libreria stdlib.h, precisamente:
int atoi(const char *s)             converte una stringa in un intero.
Es: intnum = atoi(stringa1);
double atof(const char *s)       converte una stringa in un float.
Es. floatnum = atof(stringa2);
long int atol(const char *s)   converte una stringa in un long
Es. longnum = atol(stringa3);
Queste funzioni sono però piuttosto spartane, nel senso che interrompono la
lettura della stringa al primo errore incontrato senza nessuna segnalazione.
Nella stessa libreria ci sono funzioni più sofisticate quali:
double strtod(const char * nptr, char ** endptr);
long int strtol(const char * nptr, char ** endptr,int base);
unsigned long int strtoul(const char * nptr, char ** endptr,int base);
Esse ritornano un puntatore all'elemento dell' array in cui la funzione ha
interrotto l'acquisizione dati, utile per controllarne il contenuto e capire
l'errore. Altro vantaggio di queste ultime è che possono interpretare la
stringa secondo le convenzioni del C, per esempio 10, 0xA e 012 vengono
tradotte nello stesso numero.
Per uso e dettagli vedere la documentazione del proprio compilatore.
Se invece lo scopo è acquisire dati numerici diversi contenuti nella stessa
stringa in un formato predefinito si può utilizzare:
int sscanf(const char *s, char *format, ...)  definita in stdio.h   Esempio:
char stringa[DIM]="1.55566 3 96.82";     /* un float un intero un float
separati da spazio */
sscanf(stringa, "%f%d%f", &primofloat, &intero, &secondofloat);

 Qual'č la maniera piů elegante per estrapolare il dato correttamente?
Hai provato con la sscanf()?
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

 The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
-- 


         tension_value=atof(sinput);
Oppure
sscanf(sinput,"%*s %f",&tension_value);
ammesso che tension_value sia di tipo float e non double (altrimenti ci
vuole %lf).

Newsgroup: it.comp.lang.c
Titolo: comando per pulire shell

Ciao, vorrei sapere se esiste un comando in C che faccia pulire la shell
delle scritte precedentemente visualizzate.
Grazie mille


da shell puoi digitare clear
da un programma c ( quindi non da shell )
prova questo, sugli unix-like funziona
printf("\e[2J\e[0;0f")
...


system("clear")
sotto linux funziona...... sotto dos invece di clear ci va qualcos'altro che
non ricordo

non ricordo
wow un utente linux doc ^_^ cmq ci va cls
----
Lawrence "Rhymes" Oluyede
rhy...@myself.com

 wow un utente linux doc ^_^ cmq ci va cls
magari.... il fatto č che ci sto impazzendo sopra!!!
comunque il comando dos non lo conosco perchč non ho mai utilizzato il dos
:p
ho cominciato solo un anno fa con Uindos, e per l'university devo fare
Linux!
ciao diego